Consultas de búsqueda de texto
Para escribir consultas de texto en Microsoft SQL Server 2005, debe aprender a utilizar los predicados CONTAINS y FREETEXT de Transact-SQL y las funciones de conjunto de filas CONTAINSTABLE y FREETEXTTABLE.
Los predicados CONTAINS y FREETEXT sólo se pueden utilizar en una cláusula WHERE de una instrucción SELECT. Las funciones de conjunto de filas CONTAINSTABLE y FREETEXTTABLE se pueden utilizan en la cláusula FROM de una instrucción SELECT.
El predicado CONTAINS admite una sintaxis compleja para buscar en las columnas con datos de texto:
- Una o varias palabras o frases específicas (términos simples).
En la búsqueda de texto, una palabra se considera un testigo. Un testigo se identifica por medio de separadores de palabras adecuados que siguen las reglas lingüísticas del idioma especificado. Una frase válida puede constar de varias palabras, con o sin signos de puntuación entre ellas. Por ejemplo, "croissant" es una palabra y "café au lait" es una frase. Las palabras y frases como éstas se llaman términos simples. - Formas con inflexión de una palabra determinada (término de generación).
Por ejemplo, busque la forma con inflexión de la palabra "drive". Si hay varias filas en la tabla que incluyen las palabras "drive", "drives", "drove", "driving" y "driven", todas estarían en el conjunto de resultados porque cada una de estas palabras se puede generar a partir de la palabra "drive". - Formas sinónimas de una palabra determinada (diccionario de sinónimos)
Por ejemplo, si una entrada, "{car, automobile, truck, van}", se agrega a un diccionario de sinónimos, puede buscar la forma sinónima de la palabra "car". Todas las filas de la tabla consultada que incluyen las palabras "automobile", "truck", "van" o "car" aparecen en el conjunto de resultados porque cada una de estas palabras pertenece al conjunto de expansión de sinónimos de la palabra "car". Para obtener más información sobre la estructura de los archivos de sinónimos, vea Configurar archivos de sinónimos. - Una palabra o frase cuyas palabras empiezan con un texto determinado (término prefijo).
En el caso de una frase, cada palabra de la frase se considera un prefijo. Por ejemplo, el término en inglés "auto tran*" coincide con "automatic transmission" y "automobile transducer", pero no con "automatic motor transmission". - Palabras o frases que usan valores ponderados (término ponderado).
Por ejemplo, en una consulta en la que se buscan varios términos, puede asignar a cada palabra de búsqueda un valor ponderado que indique su importancia en relación con otras palabras en la condición de búsqueda. Los resultados para este tipo de consulta devuelven las filas más relevantes primero, según la ponderación relativa que ha asignado a las palabras de búsqueda. - Una palabra o frase que esté cerca de otra palabra o frase (término de proximidad).
Por ejemplo, podría buscar las filas en las que la palabra "ice" aparece cerca de la palabra "hockey" o en las que la frase "ice skating" se encuentra próxima a la frase "ice hockey".
Un predicado CONTAINS puede combinar varios de estos términos si usa los operadores booleanos AND, OR, AND NOT, por ejemplo, para buscar todas las filas con "latte" y "New York-style bagel" en la misma columna indizada de texto. Los términos se pueden negar con el uso de AND NOT, por ejemplo, "bagel" AND NOT "cream cheese".
Cuando use CONTAINS, recuerde que SQL Server descarta las palabras irrelevantes de los criterios de búsqueda. Las palabras irrelevantes son aquellas como "a", "and", "is" o "the", que aparecen con frecuencia pero que, en realidad, no ayudan en la búsqueda de un texto determinado. Para obtener más información acerca de las palabras irrelevantes, vea Palabras irrelevantes.
Vea también
Conceptos
Consultar SQL Server mediante la búsqueda de texto