我有以下sql查询
set @st = @st + ' locationcity=''St. John''s'' order by datet desc'; execute(@st);
我使用双引号,因为在查询中使用单引号的方式。
但我收到了以下错误
's'附近的语法不正确。
字符串'by datet desc'之后的未闭合引号。
如何解决此错误?
答案 0 :(得分:1)
试试这个:
使用Print
进行调试
Declare @st varchar(1000)='';
set @st=@st+' locationcity=''St. John''''s'' order by datet desc';
print @st
execute(@st);
答案 1 :(得分:1)
您的结果查询是
locationcity='St. John's' order by datet desc
你可以看到倒数第二个'在s之前被视为结束报价,因此会给你一个错误而下一个'作为开头报价而没有收盘报价,因此又会出现一个错误。 试试
''St. John''''s''
答案 2 :(得分:0)
试试这个。
set @st = @set+' locationcity=''St. John''''s'' order by datet desc'
execute(@st);
见这个例子。
create table #tab (name varchar(50))
insert into #tab values('hello1')
declare @set as varchar(max)
set @set='update #tab '
set @set=@set+'set name=''john''''s''' --updating name with john's
exec(@set)
select * from #tab