Je pense que vous pouvez facilement résoudre ce problème en créant un INDEX DE TEXTE COMPLET sur votre KWD
colonne. Ensuite, vous pouvez utiliser le CONTIENT
query pour rechercher des phrases. L'index FULL TEXT prend soin de la ponctuation et ignore automatiquement les virgules.
-- 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"')
Pour rechercher plusieurs mots (comme le mobile phone
dans votre cas) utilisez les phrases citées :
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"woman" AND "mobile phone"')
Comme indiqué ci-dessous, les phrases citées sont importantes dans toutes les recherches pour éviter les mauvaises recherches dans le cas, par ex. lorsqu'un terme de recherche est "travail sur tablette" et que la valeur KWD est woman,girl,Digital Tablet,working,sitting,online
Il existe un cas particulier pour un seul -
terme de recherche. Le NOT ne peut pas être utilisé comme premier terme dans le CONTAINS. Par conséquent, la requête comme celle-ci doit être utilisée :
-- If search text is = -Working the query will be
SELECT AS_ID FROM tbl_main
WHERE NOT CONTAINS(KWD, '"working"')