Сервер SQL: необходимо убежать [? - PullRequest
7 голосов
/ 24 января 2012

Мне нужно экранировать [в SQL-запросе для SQL Server

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

Я на самом деле ищу [перед чем-то, и я не хочу, чтобы он действовал как подстановочный знак.Я пытался:

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

Но получаю сообщение об ошибке от этого:

Msg 102, Уровень 15, Состояние 1, Строка 1 Неверный синтаксис рядом с 'что-то'.Сообщение 105, Уровень 15, Состояние 1, Строка 1 Незакрытая кавычка после строки символов ';

Ответы [ 3 ]

7 голосов
/ 24 января 2012

Использование:

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

Вы также можете использовать:

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

Описано в LIKE (Transact-SQL) на MSDN .

4 голосов
/ 24 января 2012

Вставить [ в []

declare @T table
(
  name varchar(20)
)

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

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

Результат:

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

Посмотрите здесь, что вы можете сделать в выражении like. LIKE (Transact-SQL)

0 голосов
/ 24 января 2012

Вот небольшой пример кода.Вам необходимо вставить [ в []:

SELECT FirstName 
  FROM (SELECT '[Test]' AS FirstName) as t 
 WHERE FirstName LIKE '[[]%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...