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)')

因此,当我在线检查时,一些变量类似于SQLCMD的$(xxxx)。我该如何解决这个问题?我正在使用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)')