Tengo una tabla de Productos en una base de datos de SQL Server y tengo que solucionar un procedimiento almacenado heredado que usa indexación de texto completo. Para nuestros propósitos aquí, supongamos que la tabla Productos tiene dos campos ID, Palabras clave. Y el campo Palabras clave está poblada con lo siguiente:Problema de SQL: Usar CONTAINS() no funciona, pero LIKE funciona bien
ROLAND SA-300 Este Roland SA-300 es en perfecto estado!
Cuando ejecuto la siguiente declaración, que soy capaz de recuperar el registro:
SELECT * FROM Products WHERE Keywords LIKE '%SA-300%'
Sin embargo, cuando corro cualquiera de las siguientes afirmaciones me sale cero resultados:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' SA-300 ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'SA-300')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"SA-300"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*SA-300*"')
Pero sé que la función CONTAINS() funciona porque obtengo resultados cuando ejecuto cualquiera de estos:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' Roland ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"Roland"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*Roland*"')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
Necesito averiguar por qué la función CONTAINS() no funciona en el término 'SA-300'. Soy nuevo en los índices de texto completo, por lo que cualquier ayuda es apreciada.
No hay idea, pero ¿has verificado que el índice es actual? – MichaelGG