2012-01-24 24 views
7

tengo que escapar [en una consulta SQL para SQL Serverservidor sql: necesita escapar [?

select * from sometable where name like '[something]'; 

En realidad estoy buscando un [ante algo y no quiero que le permite actuar como un comodín. Probé:

select * from sometable where name like ''[something]'; 

Pero conocer el mensaje de error de esto:

Msg 102, nivel 15, estado 1, línea 1 Sintaxis incorrecta cerca de 'algo'. Msg 105, nivel 15, estado 1, línea 1 comillas sin cerrar después de la cadena de caracteres ';

+2

posible duplicado de [¿Cómo puedo escapar de los corchetes en una cláusula LIKE?] (Http://stackoverflow.com/questions/439495/how-can-i-escape-square-brackets-in-a-like -clause) – onedaywhen

Respuesta

6

Uso:

select * from sometable where name like '[[]something[]]'; 

se puede utilizar así:

select * from sometable where name like '\[something\]' escape '\'; 

Descrito en LIKE (Transact-SQL) on MSDN.

+0

¡Sí! ¡¡Eso funciono!! ¡Muchas gracias por todos los comentarios! – user840930

0

Aquí hay un pequeño código de muestra. Es necesario para incrustar el [ dentro []:

SELECT FirstName 
    FROM (SELECT '[Test]' AS FirstName) as t 
WHERE FirstName LIKE '[[]%' 
4

Insertar el [ en []

declare @T table 
(
    name varchar(20) 
) 

insert into @T values 
('abc'), 
('[abc') 

select * 
from @T 
where name like '[[]a%' 

Resultado:

name 
-------------------- 
[abc 

un vistazo aquí a lo que puede hacer en la expresión like. LIKE (Transact-SQL)

+1

Podría ser útil señalar que está utilizando expresiones regulares, por lo que [...] denotan un conjunto de caracteres aceptable. Y así es como/por qué esta solución funciona. – weston

+1

@weston - Actualicé la respuesta con un enlace a donde puede leer todo al respecto. –