sqlcmd 中 $ 的转义字符

escape character for $ in sqlcmd

我在 运行 脚本 sqlcmd 时遇到此错误 Sqlcmd: Error: Syntax error at line 2 near command '1'。当我检查脚本时,我发现

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

所以当我在网上查的时候,一些变量就像$(xxxx) for sqlcmd。 我该如何解决这个问题?我正在使用 Microsoft SQL。 谢谢。

没有转义字符,是的,这很愚蠢。如果您不使用变量开始,请使用 -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)')