Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Angepasste Suche mit Sonderzeichen

Ich denke, Sie können dies leicht lösen, indem Sie einen VOLLTEXTINDEX auf Ihrem KWD erstellen Säule. Dann können Sie den CONTAINS verwenden Abfrage, um nach Phrasen zu suchen. Der FULL TEXT-Index kümmert sich um die Interpunktion und ignoriert die Kommas automatisch.

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

Um nach mehreren Wörtern zu suchen (wie mobile phone in Ihrem Fall) verwenden Sie die zitierten Ausdrücke:

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

Wie unten kommentiert, sind die zitierten Phrasen bei allen Suchen wichtig, um schlechte Suchen im Fall von z. wenn ein Suchbegriff "Tablet arbeitet" und der KWD-Wert woman,girl,Digital Tablet,working,sitting,online ist

Es gibt einen Sonderfall für einen einzelnen - Suchbegriff. Das NOT kann nicht als erster Begriff in CONTAINS verwendet werden. Daher sollte die Abfrage wie folgt verwendet werden:

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