Les paso a comentar una forma de realizar búsquedas en nuestras tablas, sin usar nuestro querido LIKE, quien si no está correctamente aplicado en nuestros proyectos puede llegar a traernos problemas de performance y de SQL Injection.
En primera instancia puede parecer complicado, pero les puedo asegurar que no lo es. Solo hay que habilitar la indización a la base de datos (haciendo un click en un check), luego a la tabla, y a través de un asistente se le indica cuales son los campos de la tabla que se van a indexar. Muy simple, performante, y sobre todo seguro.
- En el Explorador de objetos, expanda el grupo de servidores, haga clic con el botón secundario en la base de datos para la que desea habilitar la indización de texto y, a continuación, seleccione Propiedades.
- Seleccione la página Archivos y, a continuación, Usar indización de texto.
Lo que vamos a hacer es habilitar la indización de texto, para esto hay que hacer los siguientes pasos:
- Expanda el grupo de servidores, expanda Bases de datos, luego Bases de datos de usuario y, a continuación, expanda la base de datos que contiene la tabla que desea habilitar para la indización de texto.
- Haga clic con el botón secundario en la tabla que desea habilitar para la indización de texto.
- Seleccione Índice de texto y, a continuación, haga clic en Habilitar indización de texto.
Para iniciar el asistente de indización de texto:
- En el Explorador de objetos, haga clic con el botón secundario en la tabla en la que desea crear un índice de texto y, a continuación, seleccione Índice de texto.
- Seleccione Definir índice de texto.
Un ejemplo de como sería nuestra consulta:
SELECT Name, Color FROM Production.Product
WHERE CONTAINS((Name, Color), 'Red');
SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, 'vital safety components' );
Fuentes:
http://technet.microsoft.com/es-es/library/ms403375%28SQL.90%29.aspx
http://technet.microsoft.com/es-es/library/ms142536%28SQL.90%29.aspx
http://technet.microsoft.com/es-es/library/aa337082%28SQL.90%29.aspx
http://msdn.microsoft.com/en-us/library/ms142488.aspx
http://msdn.microsoft.com/en-us/library/ms142583.aspx
Últimos Comentarios