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)')
我在 运行 脚本 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)')