Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Dostosowane wyszukiwanie ze znakami specjalnymi

Myślę, że możesz łatwo rozwiązać ten problem, tworząc PEŁNOTEKSTOWY INDEKS na swoim KWD kolumna. Następnie możesz użyć ZAWIERA zapytanie do wyszukiwania fraz. Indeks PEŁNOTEKSTOWY dba o interpunkcję i automatycznie ignoruje przecinki.

-- 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"')

Aby wyszukać wiele słów (np. mobile phone w Twoim przypadku) użyj cytowanych fraz:

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

Jak skomentowano poniżej, cytowane frazy są ważne we wszystkich wyszukiwaniach, aby uniknąć błędnych wyszukiwań w przypadku np. gdy wyszukiwane hasło to „tablet działający”, a wartość KWD to woman,girl,Digital Tablet,working,sitting,online

Istnieje specjalny przypadek dla pojedynczego - szukany termin. NOT nie może być użyty jako pierwszy termin w CONTAINS. Dlatego należy użyć takiego zapytania:

-- 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. Szyfrowanie kopii zapasowej bazy danych programu SQL Server

  2. Statystyka operacji we/wy pliku wydajności programu SQL Server

  3. 3 sposoby na zwrócenie ciągu wielu spacji w SQL Server

  4. Poziomy izolacji programu SQL Server:seria A

  5. Jak używać RANK() w SQL Server