sql >> Database teknologi >  >> RDS >> Oracle

Oracle-søgetekst med ikke-engelske tegn

1) Brug nlssort med BINARY_AI (både med store og små bogstaver og accent):

SQL> select nlssort('Peña Báináõ', 'NLS_SORT = BINARY_AI') C from dual;

C
------------------------
70656E61206261696E616F00

SQL> select nlssort('Pena Bainao', 'NLS_SORT = BINARY_AI') C from dual;

C
------------------------
70656E61206261696E616F00

SQL> select nlssort('pena bainao', 'NLS_SORT = BINARY_AI') C from dual;

C
------------------------
70656E61206261696E616F00

SQL> select 'true' T from dual where nlssort('pena bainao', 'NLS_SORT = BINARY_AI') = nlssort('Peña Báináõ', 'NLS_SORT = BINARY_AI') ;

T
----
true

2) Du kan også ændre NLS_SORT-sessionsvariablen til binary_ai, og så behøver du ikke angive NLS_SORT hver gang:

SQL> select 'true' T from dual where nlssort('pena bainao') = nlssort('Peña Báináõ') ;

no rows selected

SQL> alter session set nls_sort = binary_ai;

Session altered.

SQL> select 'true' T from dual where nlssort('pena bainao') = nlssort('Peña Báináõ') ;

T
----
true

3) At droppe brugen af ​​nlssort funktion og ændre sematikken for alting, indstil også nls_comp-sessionsvariablen:

SQL> select 'true' T from dual where 'pena bainao' = 'Peña Báináõ';

no rows selected

SQL> alter session set nls_comp = linguistic;

Session altered.

SQL> select 'true' T from dual where 'pena bainao' = 'Peña Báináõ';

T
----
true

Mulighed 1 ændrer kun lokal adfærd, forespørgslen, hvor du ønsker forskellige resultater. Mulighed 2 og 3 vil ændre adfærd for andre forespørgsler og er muligvis ikke, hvad du ønsker. Se tabel 5-2 af Oracle® Database Globalization Support Guide . Se også afsnittet "Brug af sproglige indekser " for at se, hvordan du kan bruge indekser.




  1. Hvordan bruger man indeks i fremmed tabel SELECT MAX(id) forespørgsel i PostgreSQL?

  2. Formular i PDO for at opdatere data

  3. MySQL GUI-programmer

  4. MySQL-grænse fra faldende rækkefølge