2012-02-24 5 views
22

tengo el siguiente WHERE cláusula:Error de sintaxis cerca de 'de' 'el control de' en la condición de búsqueda de texto completo

WHERE (@Keywords IS NULL 
      OR (CONTAINS((p.Title, p.Area, p.[Message]), @Keywords)) 
     ) 

Si @Keywords = 'control', la consulta se ejecuta con éxito y filtros de mis registros

Si @Keywords = 'control of', entonces me sale el siguiente error:

Syntax error near 'of' in the full-text search condition 'control of'.

¿Por qué es esto y qué puedo hacer para resolver el problema?

La razón principal por la que estoy usando este método sobre el uso de la condición LIKE es que puedo buscar varias palabras.

Respuesta

27

Incluya las palabras clave entre comillas si desea buscar exactamente para el control de

SET @Keywords = '"control of"' 

Si desea buscar control de y de, utilice la siguiente:

SET @Keywords = 'control AND of' 

Pero el servidor puede considere de como una palabra basura o parada, por lo que en este caso utilizar el siguiente:

SET @Keywords = 'control AND "of"' 
+0

Saludos Esto ha impedido errores. Sin embargo, los resultados solo vuelven si una de esas filas contiene 'control de'. Pensé que esto funcionaba con la búsqueda de texto completo para que también retomara el "control". – Curt

+1

Puede ser - debe probar todas las 3 opciones y comparar los resultados. Y preste atención a las palabras ** basura ** - el servidor simplemente quita estas palabras de la búsqueda asumiendo que esto no es interesante y no es relevante –

+5

Saludos de nuevo. Sin embargo, '@ Palabras clave' es un parámetro pasado desde la Aplicación web, por lo que no tengo control sobre el texto. ¿Sería una solución aceptable colocar un reemplazo en "" a "Y"? ¿Cuál es la forma más común de hacer búsquedas como esta? Aclamaciones – Curt

Cuestiones relacionadas