sqlcmd中$的转义字符

时间:2017-05-04 08:55:16

标签: sql sql-server sqlcmd

当我为脚本运行Sqlcmd: Error: Syntax error at line 2 near command '1'时出现此错误sqlcmd。当我查看脚本时,我发现了

INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(162.66)')

因此,当我在线查看时,某些变量类似于$(xxxx)的sqlcmd。 我该如何解决这个问题?我正在使用Microsoft SQL。 谢谢。

1 个答案:

答案 0 :(得分:2)

没有逃脱角色,是的,这是愚蠢的。如果您没有使用变量开头,请使用-x选项关闭变量替换,或者拆分表达式以使其不再作为变量替换进行解析:

INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$' + N'(162.66)')

在必要时,请注意结果仍然是正确的类型。

在极少数情况下,即使这是不可能的(因为需要字符串文字并且不允许使用表达式),您必须加入它们而不是敲打它们,并将变量设置为所需的值:

:setvar descr $(1.2)
INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(descr)')

显然这引起了头痛,所以幸运的是,对文字的要求很少。如果你需要多次这样做,那么你最好只使用一个$本身的变量:

:setvar dollar $
INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(dollar)(1.2)')