sql >> Database >  >> RDS >> Sqlserver

SQL Aangepaste zoekopdracht met speciale tekens

Ik denk dat je dit eenvoudig kunt oplossen door een FULL TEXT INDEX aan te maken op je KWD kolom. Dan kun je de BEVAT gebruiken query om naar zinnen te zoeken. De FULL TEXT index zorgt voor de interpunctie en negeert automatisch de komma's.

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

Om de meerdere woorden te zoeken (zoals de mobile phone in jouw geval) gebruik de geciteerde zinnen:

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

Zoals hieronder wordt opgemerkt, zijn de geciteerde zinnen belangrijk bij alle zoekopdrachten om slechte zoekopdrachten te voorkomen in het geval van b.v. wanneer een zoekterm "tablet werkend" is en de KWD-waarde woman,girl,Digital Tablet,working,sitting,online is

Er is een speciaal geval voor een enkele - zoekterm. De NOT kan niet worden gebruikt als de eerste term in de CONTAINS. Daarom moet de volgende zoekopdracht worden gebruikt:

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


  1. Hoe invoer-uitvoerparameters in SQL Server opgeslagen procedure/functie te declareren?

  2. Query om het aantal records in elke tabel in een database weer te geven

  3. PL/pgSQL Reeks rijen

  4. Index maken in SQL om de prestaties te verbeteren