Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Teks pencarian Oracle dengan karakter non-bahasa Inggris

1) Menggunakan nlssort dengan BINARY_AI (Insentif huruf besar dan aksen):

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) Anda juga dapat mengubah variabel sesi NLS_SORT menjadi binary_ai dan kemudian Anda tidak perlu menentukan NLS_SORT setiap saat:

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) Untuk menghentikan penggunaan nlssort fungsi dan ubah sematik semuanya, juga atur variabel sesi 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

Opsi 1 hanya mengubah perilaku lokal, kueri di mana Anda menginginkan hasil yang berbeda. Opsi 2 dan 3 akan mengubah perilaku kueri lain dan mungkin bukan yang Anda inginkan. Lihat Tabel 5-2 dari Panduan Dukungan Globalisasi Database Oracle® . Lihat juga bagian "Menggunakan Indeks Linguistik " untuk melihat cara menggunakan indeks.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis Indeks di oracle?

  2. Oracle - Ambil tanggal/waktu dalam milidetik dari bidang tipe data DATE

  3. distribusi pembayaran oracle sql query

  4. Kesalahan percikan - Presisi desimal 39 melebihi presisi maks 38

  5. Bagaimana saya bisa mendapatkan jumlah hari antara 2 tanggal di Oracle 11g?