1) Utilisation de nlssort
avec BINARY_AI (insensibilité à la fois à la casse et à l'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) Vous pouvez également modifier la variable de session NLS_SORT en binary_ai et vous n'aurez alors pas à spécifier NLS_SORT à chaque fois :
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) Abandonner l'utilisation de nlssort
fonction et changez la sématique de tout, définissez également la variable de session 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
L'option 1 modifie uniquement le comportement local, la requête pour laquelle vous souhaitez des résultats différents. Les options 2 et 3 modifieront le comportement d'autres requêtes et peuvent ne pas correspondre à ce que vous souhaitez. Voir Tableau 5-2 du Guide d'assistance à la globalisation de la base de données Oracle® . Consultez également la section "Utilisation des index linguistiques " pour voir comment pouvoir utiliser les index.