sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Búsqueda personalizada con caracteres especiales

Creo que puede resolver esto fácilmente creando un ÍNDICE DE TEXTO COMPLETO en su KWD columna. Luego puede usar CONTAINS query para buscar frases. El índice FULL TEXT se encarga de la puntuación e ignora las comas automáticamente.

-- 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 buscar varias palabras (como el mobile phone en su caso) utilice las frases citadas:

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

Como se comenta a continuación, las frases citadas son importantes en todas las búsquedas para evitar malas búsquedas en el caso de, p. cuando un término de búsqueda es "tableta funcionando" y el valor KWD es woman,girl,Digital Tablet,working,sitting,online

Hay un caso especial para un solo - término de búsqueda. NOT no se puede utilizar como primer término en CONTAINS. Por lo tanto, se debe utilizar la consulta como esta:

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