Неверный синтаксис рядом с '%'. внутри динам c SQL - PullRequest
0 голосов
/ 01 февраля 2020

Я только что узнал о Dynami c SQL, но когда я добавляю подстановочный знак, такой как '%', я получаю эту ошибку:

Msg 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с '%'.

Вот запрос:

declare @Filter varchar(50)
set @Filter = '2%'

exec ('select * from dbo.tbl_coa where acct_code like ' + @Filter)

В любом случае это можно исправить или это невозможно с помощью Dynami c SQL

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

Вам необходимо заключить @Filter в кавычки:

exec ('select * from dbo.tbl_coa where acct_code like ''' + @Filter + '''')

Демонстрация по SQLFiddle

Обратите внимание, что лучше поместить нужные кавычки в запрос, который вы выполняете так, что если вы делаете что-то вроде

set @Filter = (SELECT ... )

, запрос все равно будет работать без необходимости делать что-то вроде

set @Filter = concat('''', (select '2%'), '''')
0 голосов
/ 01 февраля 2020

Вы неправильно указали строку. Вы должны исправить это на set @Filter = '''2%''', проверьте результат ниже. Демонстрация на дБ <> fiddle

declare @Filter varchar(50)
set @Filter = '''2%'''

print ('select * from dbo.tbl_coa where acct_code like ' + @Filter)
// Output: select * from dbo.tbl_coa where acct_code like '2%'

Полная демонстрация на дб <> fiddle

create table tbl_coa(
   acct_code varchar(10)
)

insert into tbl_coa
values('21'),('20'),('30')

declare @Filter varchar(50)
set @Filter = '''2%'''

exec  ('select * from dbo.tbl_coa where acct_code like ' + @Filter)

Выход

acct_code
21
20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...