【问题标题】:How to escape potential quotes in a variable used in a sql string to be executed?如何转义要执行的 sql 字符串中使用的变量中的潜在引号?
【发布时间】:2019-08-13 21:38:50
【问题描述】:

我有一个 sql 脚本,我在其中构造一个 sql 字符串并将其存储到一个变量中,然后执行该 sql 字符串。

在该 sql 字符串中,我需要从传递的动态变量创建一个新列。该变量的一个可能值包含一个单引号,它会导致我的脚本失败。

我尝试了几种转义引号的方法,但未能使其正常工作。你们中的任何人都可以提供一些帮助吗?非常感谢您!

要执行的简化目标 sql 查询(工作正常):

SELECT 'Alice''s Bakery' AS name

将其作为字符串放入变量后:

DECLARE @sSQLString nvarchar(max)
DECLARE @curName nvarchar(510)

SET @curName = 'Alice''s Bakery'

SET @sSQLString = 'SELECT ''' + @curName + ''' AS name'
EXECUTE sp_executesql @sSQLString

它将失败并给出错误消息:“SQL 错误 [102] [S0001]: 'Bakery' 附近的语法不正确。”

【问题讨论】:

  • 嘿,太神奇了!!!!非常感谢!

标签: sql


【解决方案1】:

使用 REPLACE 将引号加倍。

DECLARE @sSQLString nvarchar(max)
DECLARE @curName nvarchar(510)

SET @curName = 'Alice''s Bakery'

SET @sSQLString = 'SELECT ''' + REPLACE(@curName, '''', '''''') + ''' AS name'
EXECUTE sp_executesql @sSQLString

【讨论】:

    猜你喜欢
    • 2014-09-28
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2014-12-07
    • 2012-07-04
    相关资源
    最近更新 更多