$ sqlcmd中的转义字符

问题描述:

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

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

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

+1

尝试使用转义字符'\ $'?因为在执行sqlcmd时,$被认为是变量替换 –

+0

@KannanKandasamy,谢谢你的回答。我试图找到有关sqlcmd的转义字符,并发现此链接http://www.robvanderwoude.com/escapechars.php但$不在列表中 – kevin

没有逃生角色,是的,这是愚蠢的。无论是如果你不使用变量来开始关闭变量替换的-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)')