sql >> Databasteknik >  >> RDS >> Oracle

Oracle söktext med icke-engelska tecken

1) Använd nlssort med BINARY_AI (både skiftläge och 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 också ändra sessionsvariabeln NLS_SORT till binary_ai och då behöver du inte ange NLS_SORT varje gång:

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) För att avbryta användningen av nlssort funktion och ändra sematik för allt, ställ även in sessionsvariabeln 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

Alternativ 1 ändrar endast lokalt beteende, frågan där du vill ha olika resultat. Alternativ 2 och 3 kommer att ändra beteendet för andra frågor och kanske inte är vad du vill ha. Se tabell 5-2 av Stödguide för Oracle® Database Globalization . Se även avsnittet "Använda språkliga index " för att se hur man kan använda index.




  1. Php tidsformat

  2. Migrera från Oracle till PostgreSQL - Vad du bör veta

  3. Hur man hämtar data från överordnad och underordnad tabell på basis av status där främmande nyckel har olika status för varje rad

  4. MariaDB JSON_ARRAY() Förklarad