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

Tìm kiếm tùy chỉnh SQL với các ký tự đặc biệt

Tôi nghĩ bạn có thể dễ dàng giải quyết vấn đề này bằng cách tạo CHỈ SỐ VĂN BẢN ĐẦY ĐỦ trên KWD của bạn cột. Sau đó, bạn có thể sử dụng CONTAINS truy vấn để tìm kiếm các cụm từ. Chỉ mục FULL TEXT sẽ tự động xử lý dấu câu và bỏ qua dấu phẩy.

-- If search text is = Man,Businessman then the query will be
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"Man" AND "Businessman"')

-- If search text is = Man,-Businessman then  the query will be
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"Man" AND NOT "Businessman"')

-- If search text is = woman,girl,-Working  the query will be
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"woman" AND "girl" AND NOT "working"')

Để tìm kiếm nhiều từ (như mobile phone trong trường hợp của bạn) sử dụng các cụm từ được trích dẫn:

SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"woman" AND "mobile phone"')

Như đã nhận xét bên dưới, các cụm từ được trích dẫn rất quan trọng trong tất cả các tìm kiếm để tránh các tìm kiếm không tốt trong trường hợp ví dụ:khi cụm từ tìm kiếm là "máy tính bảng đang hoạt động" và giá trị KWD là woman,girl,Digital Tablet,working,sitting,online

Có một trường hợp đặc biệt cho một - cụm từ tìm kiếm. NOT không thể được sử dụng làm thuật ngữ đầu tiên trong CONTAINS. Do đó, nên sử dụng truy vấn như thế này:

-- If search text is = -Working  the query will be
SELECT AS_ID FROM tbl_main
WHERE NOT CONTAINS(KWD, '"working"')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Chọn bản ghi mới nhất khi có bản sao

  2. Cách tìm định dạng ngày được sử dụng trong phiên hiện tại trong SQL Server (T-SQL)

  3. LINQ to SQL mỗi hàng thứ N từ bảng

  4. Khóa chính SQL có thể chấp nhận '0'?

  5. Trả lại Tên máy trạm hiện tại được kết nối với SQL Server (T-SQL)