texto full ejemplos ejemplo comodines coincidencias caracter campo cadena buscar sql sql-server-2012 full-text-search wildcard

full - sql like comodines



La búsqueda de texto completo en la columna de direcciones de correo electrónico se rompe cuando se usan comodines (1)

Intento realizar una búsqueda de texto completo en una tabla que contiene direcciones de correo electrónico.

Digamos que mi tabla contiene la dirección de correo electrónico: [email protected]

Ahora, debido a los separadores de palabras, los períodos en esta dirección de correo electrónico funcionan como un separador. El Stoplist de SQL Server predeterminado evita que los caracteres individuales sean indexados (por razones obvias).

Normalmente no es un problema y la búsqueda de la dirección funciona bien. Sin embargo, quiero poder buscar partes de la dirección.

Me gustaría buscar "abbuilder @ real" utilizando la consulta a continuación. Esto no funcionará desafortunadamente, porque la dirección no está indexada como "abbuilder @ real ...".

SELECCIONAR * FROM [Libreta de direcciones] a WHERE CONTAINS ([a]. *, ''"Abbuilder @ real *"'')

¿Alguna sugerencia sobre cómo resolver esto? Ejemplo de prueba en SQL Fiddle .


Puede usar el operador LIKE:

SELECT * FROM [Addressbook] a WHERE EmailAddress LIKE ''a.b.builder@real%'';

Solo puede pasar un valor de cadena a un segundo parámetro en CONTAINS . No creo que haya una forma de eludir esto sin comprometer el rendimiento en primer lugar.

Entonces, si pasas un wildcard , tomará todo el valor de la cadena como condición:

SELECT * FROM [Addressbook] a WHERE CONTAINS([a].*, ''a.b.builder@real*'')

Puede ver un enlace de alquiler para funciones que puede usar en el enlace de cadenas. La única forma en que puedo ver que puedes resolver esto es escribiendo algún tipo de función LIKE y pasando el valor que se devuelve a CONTAINS. Pero eso hará que su rendimiento sea aún peor que el simple uso de un operador LIKE.

SQL Fiddle