Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Đối chiếu không phân biệt trọng âm và chữ hoa chữ thường trong Oracle với LIKE

một phương pháp sẽ là sửa đổi các thông số phiên của bạn NLS_SORTNLS_COMP :

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe

SQL> alter session set nls_sort=Latin_AI;

Session altered

SQL> alter session set nls_comp=linguistic;

Session altered

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

Như được hiển thị trong SO khác, bạn không thể sử dụng toán tử LIKE với NLSSORT (điều này là do, NLSSORT trả về một chuỗi byte sẽ được sử dụng để sắp xếp và LIKE chỉ hoạt động với chuỗi ký tự)

Cập nhật: Mặc dù thiết lập các tham số NLS là lựa chọn đầu tiên của tôi, nhưng bạn cũng có thể sử dụng các hàm tích hợp để đạt được kết quả tương tự. Một vài ví dụ:

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(convert(NAME, 'US7ASCII'))
  4         LIKE upper(convert('%pe%', 'US7ASCII'));

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(translate(NAME, 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'))
  4         LIKE upper(translate('%pe%', 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'));

NAME
-----------------------------------
pepe
pépé
PEPE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. thay đổi bảng sửa đổi cột trong cơ sở dữ liệu oracle

  2. Java Multicast Time To Live luôn là 0

  3. SQL chọn hàng theo ngày gần đây nhất với hai cột duy nhất

  4. C # gọi hàm lưu trữ oracle

  5. CRS 11.2.0