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

Tìm các bản sao có thể có trong hai cột bỏ qua chữ hoa và các ký tự đặc biệt

low () / upper ()

Sử dụng một trong những cách này để gấp các ký tự thành chữ thường hoặc chữ hoa. Các ký tự đặc biệt không bị ảnh hưởng:

SELECT count(*), lower(name), number
FROM   tbl
GROUP  BY lower(name), number
HAVING count(*) > 1;

unaccent ()

Nếu bạn thực sự muốn bỏ qua các dấu phụ, như ngụ ý nhận xét của bạn, hãy cài đặt mô-đun bổ sung không công tâm , cung cấp từ điển tìm kiếm văn bản loại bỏ dấu và cả hàm mục đích chung unaccent () :

CREATE EXTENSION unaccent;

Làm cho nó rất đơn giản:

SELECT lower(unaccent('Büßercafé'));

Kết quả:

busercafe

Điều này không tách các chữ không phải là chữ cái. Thêm regexp_replace () như @Craig đã đề cập cho điều đó:

SELECT lower(unaccent(regexp_replace('$s^o&f!t Büßercafé', '\W', '', 'g') ));

Kết quả:

softbusercafe

Bạn thậm chí có thể xây dựng một chỉ mục chức năng trên đó:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django:Các phương pháp hay nhất để chuyển một dự án từ sqlite sang PostgreSQL là gì

  2. Làm thế nào để hiển thị số hàng trong truy vấn PostgreSQL?

  3. lỗi đặt java String [] thành câu lệnh chuẩn bị postgres

  4. Truy vấn múi giờ Optimize / Index

  5. Kết quả lớn Đặt trên truy vấn postgresql