Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Suchtext mit nicht-englischen Zeichen

1) Verwenden von nlssort mit BINARY_AI (Groß- und Kleinschreibung beachten):

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) Sie könnten auch die Sitzungsvariable NLS_SORT in binary_ai ändern und müssten dann nicht jedes Mal NLS_SORT angeben:

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) Um die Verwendung von nlssort einzustellen Funktion und ändern Sie die Sematik von allem, setzen Sie auch die Sitzungsvariable nls_comp:

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

Option 1 ändert nur das lokale Verhalten, die Abfrage, bei der Sie andere Ergebnisse wünschen. Option 2 und 3 ändern das Verhalten anderer Abfragen und sind möglicherweise nicht das, was Sie möchten. Siehe Tabelle 5-2 des Oracle® Database Globalization Support Guide . Sehen Sie sich auch den Abschnitt "Using Linguistic Indexes " um zu sehen, wie Indizes verwendet werden können.