sql-server - right - substring sql
Búsqueda de texto completo en SQL Server ¿Caracteres de escape? (1)
Malas noticias: no hay manera. Buenas noticias: no lo necesitas (ya que no te ayudará).
He enfrentado un problema similar en uno de mis proyectos. Según tengo entendido, al crear un índice de texto completo, SQL Server trata todos los caracteres especiales como delimitadores de palabras y, por lo tanto,
- Su palabra con dicho carácter se representa como dos (o más) palabras en el índice de texto completo.
- Estos caracteres se eliminan y no aparecen en un índice.
Considere que tenemos la siguiente tabla con un índice de texto completo correspondiente (que se omite):
CREATE TABLE [dbo].[ActicleTable]
(
[Id] int identity(1,1) not null primary key,
[ActicleBody] varchar(max) not null
);
Considerar más adelante agregamos filas a la tabla:
INSERT INTO [ActicleTable] values (''digitally improvements folders'')
INSERT INTO [ActicleTable] values (''digital"ly improve{ments} fold(ers)'')
Intenta buscar:
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, ''digitally'')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, ''improvements'')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, ''folders'')
y
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, ''digital'')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, ''improve'')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, ''fold'')
El primer grupo de condiciones coincidirá con la primera fila (y no con la segunda), mientras que el segundo grupo solo coincidirá con la segunda fila.
Desafortunadamente, no pude encontrar un enlace a MSDN (o algo así) donde dicho comportamiento esté claramente establecido. Pero he encontrado un artículo oficial que explica cómo convertir comillas para consultas de búsqueda de texto completo, que está alineado [implícitamente] con el algoritmo descrito anteriormente.
Estoy haciendo una consulta de búsqueda de texto completo de MS SQL Server. Necesito escapar de caracteres especiales para poder buscar un término específico que contenga caracteres especiales. ¿Existe una función incorporada para escapar de una cadena de búsqueda de texto completo? Si no, ¿cómo lo harías?