提问人:Mad Scientist 提问时间:7/31/2018 最后编辑:marc_sMad Scientist 更新时间:7/31/2018 访问量:1094
SQL Server 中 “ ” 的 ' ' 内部
' ' inside of " " in SQL Server
问:
在此 SQL 查询中
INSERT INTO RESULT_FILTER (RESULT_FILTER_NAME, RESULT_FILTER_SQL)
VALUES ('German Power Trades flagged red',
'" AND worst_status = 'R' AND country = 'DE' AND commodity = 'EL'"');
存在一个问题,即 SQL Server 无法处理"AND worst_status='R' AND country='DE' AND commodity='EL'"'
发生以下错误:
消息 102,级别 15,状态 1,第 3 行 “R”附近的语法
不正确。
我是否必须在引号内使用另一种语法才能让 SQL Server 将其视为引号?我正在使用 Microsoft SQL Server Management Studio 2017
答:
3赞
Yogesh Sharma
7/31/2018
#1
您需要将单引号加倍:
INSERT INTO RESULT_FILTER (RESULT_FILTER_NAME, RESULT_FILTER_SQL)
VALUES('German Power Trades flagged red', '" AND worst_status=''R''
AND country=''DE'' AND commodity=''EL'' "');
评论
3赞
Damien_The_Unbeliever
7/31/2018
“双引号”是该字符的一个相当常见的名称。相反,我会说“你需要将单引号加倍”,这就是你在代码中所做的。"
0赞
Yogesh Sharma
7/31/2018
@Damien_The_Unbeliever。。。著名的。
1赞
Cetin Basoz
7/31/2018
#2
在现实世界中,您不太可能按字面意思编写这些值。如果你真的这样做了,那么你需要将单引号加倍。但是,对于实际场景,您将使用也处理此问题的参数:
declare @filterName nvarchar(200) = N'German Power Trades flagged red'
declare @filterSQL nvarchar(4000) = N'AND worst_status=''R''
AND country=''DE''
AND commodity=''EL'''
-- @filterName and @filterSQL would come from client
INSERT INTO RESULT_FILTER (RESULT_FILTER_NAME, RESULT_FILTER_SQL)
VALUES (@filterName, @filterSQL);
评论