Acho que você pode resolver isso facilmente criando um FULL TEXT INDEX no seu
KWD
coluna. Em seguida, você pode usar o CONTAINS
consulta para pesquisar frases. O índice FULL TEXT cuida da pontuação e ignora as vírgulas automaticamente. -- 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"')
Para pesquisar as várias palavras (como o
mobile phone
no seu caso) use as frases citadas:SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"woman" AND "mobile phone"')
Conforme comentado abaixo, as frases citadas são importantes em todas as pesquisas para evitar pesquisas ruins no caso de, por exemplo, quando um termo de pesquisa for "tablet working" e o valor KWD for
woman,girl,Digital Tablet,working,sitting,online
Existe um caso especial para um único
-
termo de pesquisa. O NOT não pode ser usado como o primeiro termo do CONTAINS. Portanto, a consulta como esta deve ser usada:-- If search text is = -Working the query will be
SELECT AS_ID FROM tbl_main
WHERE NOT CONTAINS(KWD, '"working"')