Tengo una columna EntityName, y quiero que los usuarios puedan buscar nombres ingresando palabras separadas por espacio. El espacio se considera implícitamente como un operador 'Y', lo que significa que las filas devueltas deben tener todas las palabras especificadas, y no necesariamente en el orden dado.SQL: Encuentre filas donde Column contiene todas las palabras dadas
Por ejemplo, si tenemos filas como éstas:
- Abba nina bonita balerina
- acdc me sacudió toda la noche
- algo que me está
- sueño teatro que es todo acerca de ti
cuando el usuario ingresa: me you
, o you me
(los resultados deben ser equivalentes), el resultado tiene filas 2 y 3.
sé que puedo ir como:
WHERE Col1 LIKE '%' + word1 + '%'
AND Col1 LIKE '%' + word2 + '%'
pero quería saber si hay alguna solución más óptima.
El CONTAINS
requerirá un índice de texto completo, que (por diversas razones) no es una opción.
¿Quizás Sql2008 tiene alguna solución incorporada, semi oculta para estos casos?
Tengo curiosidad de saber las razones por la solución índice de texto completo está fuera de la mesa . Esa es ciertamente la forma en que me gustaría ir aquí. –
Perdón por una respuesta tardía: no nos funciona porque no admite búsquedas como la que utilicé como ejemplo en cuestión ('% término%'), la búsqueda que no está limitada a palabras separadas, sino incluso palabras que solo contener el término en él). Y, además, SqlServer está en una máquina agrupada con unidades de red compartidas, y cualquier instalación adicional está congelada (y debemos instalar la búsqueda de texto completo, porque los administradores no la incluyeron al instalarla): nos aseguran que es un infierno hacer instalaciones adicionales a los nodos ... así que es por eso que está fuera de la mesa ... – veljkoz