【问题标题】:Single quote represented by double single quotes not working双单引号表示的单引号不起作用
【发布时间】:2015-02-23 15:17:49
【问题描述】:

我有以下 sql 查询

set @st = @st + ' locationcity=''St. John''s'' order by datet desc'; execute(@st); 

我使用双单引号,因为这是在查询中使用单引号的方式。

但我收到以下错误

“s”附近的语法不正确。

字符串'order by datet desc'后面的非右引号。

我该如何解决这个错误?

【问题讨论】:

  • 错误可能不在您提供的语句中。这条语句之前@st 的初始值是多少?
  • 注意:你不需要 ;在 sql 语句的末尾。
  • 只是逃避 ' by '。例如:“圣。约翰的

标签: sql sql-server tsql escaping


【解决方案1】:

试试这个:

使用Print 进行调试

Declare @st varchar(1000)='';
set @st=@st+' locationcity=''St. John''''s'' order by datet desc';
print @st
 execute(@st);

【讨论】:

    【解决方案2】:

    您的结果查询是

     locationcity='St. John's' order by datet desc
    

    您可以看到 s 之前的倒数第二个 ' 被认为是一个结束引号,因此会给您一个错误,并且下一个 ' 充当没有结束引号的开始引号,因此会出现另一个错误。 试试

    ''St. John''''s''
    

    【讨论】:

      【解决方案3】:

      试试这个。

       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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 2014-06-28
        • 2011-05-18
        • 2011-09-17
        • 2012-12-13
        • 1970-01-01
        相关资源
        最近更新 更多