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

Cách tìm các hàng bằng cách lọc một văn bản cụ thể bằng cách sử dụng Tìm kiếm toàn văn trong MS SQL 2012

Tôi không nghĩ rằng một tìm kiếm toàn văn sẽ giúp bạn. Có vẻ như bạn đang tìm kiếm bất kỳ phân đoạn nào ngay cả như các thuật ngữ kỹ thuật như /1/ .

Hãy thử điều này cho XML

 DECLARE @SearchFor VARCHAR(100)='1';

 SELECT * 
 FROM SettingsData
 WHERE xmldata.exist(N'//*[contains(text()[1],sql:variable("@SearchFor"))]')=1;

Nó sẽ kiểm tra text() nội bộ của bất kỳ nút nào nếu nó chứa cụm từ tìm kiếm. Nhưng bất kỳ giá trị nào có 1 bên trong được tìm thấy (ví dụ:bất kỳ số không liên quan nào có 1 ở đâu đó.) Bạn có thể tìm kiếm text()="1" và thực hiện contains chỉ khi độ dài chuỗi vượt quá mức tối thiểu nhất định.

Một cái gì đó giống như

WHERE xmldata.exist(N'//*[text()[1]=sql:variable("@SearchFor") or(string-length(text()[1])>=3 and contains(text()[1],concat("/",sql:variable("@SearchFor"),"/")))]')=1;

Json - cho đến nay - không hơn gì một chuỗi và phải được phân tích cú pháp. Với v2016, Microsoft đã giới thiệu hỗ trợ JSON, nhưng bạn đang sử dụng v2012. Sự cố với LIKE tìm kiếm trên chuỗi JSON có thể là bạn sẽ tìm thấy chuỗi 1 ngay cả khi là một phần của tên phần tử. Phần còn lại như trên ...

 SELECT *
 FROM SettingsData
 WHERE jsondata LIKE '%' + @SearchFor + '%';



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt lại AutoIncrement trong SQL Server sau khi Xóa

  2. Tính toán chi phí trung bình có trọng số vĩnh viễn SQL Server 2008

  3. Tôi có thể sử dụng Tư cách thành viên ASP.NET với SQL Server Compact Edition không?

  4. Sao chép cột được mã hóa sang cơ sở dữ liệu SQL Server 2012 khác

  5. Nhiều phiên bản của SQL Server sử dụng Entity Framework trong một ứng dụng ASP.NET duy nhất