Oracle
 sql >> база данни >  >> RDS >> Oracle

Съпоставяне без значение на акцентите и малките букви в Oracle с LIKE

един метод би бил да модифицирате параметрите на вашата сесия NLS_SORT и NLS_COMP :

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe

SQL> alter session set nls_sort=Latin_AI;

Session altered

SQL> alter session set nls_comp=linguistic;

Session altered

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

Както е показано в друг SO, не можете да използвате оператора LIKE с NLSSORT (това е защото NLSSORT връща низ от байтове, които ще бъдат използвани за сортиране, а LIKE работи само с низове от знаци)

Актуализация: Въпреки че задаването на NLS параметрите би било първият ми избор, можете също да използвате вградени функции, за да постигнете същия резултат. Няколко примера:

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(convert(NAME, 'US7ASCII'))
  4         LIKE upper(convert('%pe%', 'US7ASCII'));

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(translate(NAME, 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'))
  4         LIKE upper(translate('%pe%', 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'));

NAME
-----------------------------------
pepe
pépé
PEPE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Времето за изчакване на връзката за DriverManager getConnection

  2. Как да добавите „ON DELETE CASCADE“ в израза ALTER TABLE

  3. Каква е разликата между varchar и varchar2 в Oracle?

  4. Как Java за OS X 2013-004 засяга (прекъсва) Swing приложения?

  5. Как работи ROWNUM в заявка за пагинация?