4

当我select '$(''test'')'在 SQL Management Studio 2008 中运行它时,它返回$('test')

当我sqlcmd -S SERVER -E -d DATABASE -q "select $(''test'')"在命令行上运行它返回Sqlcmd: Error: Syntax error at line 1 near command '''.

如果我删除美元符号,它就可以工作。“$”是特殊字符吗?

这是一个 sqlcmd 错误吗?如何更改脚本以获得所需的结果。

4

2 回答 2

15

是的,$(id)在 SQLCMD 中有特殊的语义:它是一个变量替换。您可以运行以下命令:

sqlcmd /E /S . /v variable=MyTable /Q "select * from $(variable)"

这将从 MyTable 中选择。正如您所猜测的,/v是定义变量的开关。另一方面,默认情况下,SSMS 不会解释用于变量替换的 SQL。通过选中“在 SQLCMD 模式下打开查询寡妇”选项,可以使 SSMS 执行此操作

有关模式的详细信息,请参阅将 sqlcmd 与脚本变量一起使用

于 2010-03-17T18:45:49.820 回答
0

您尝试运行的命令:

select $('test')

无效。正如您所注意到的,当您删除“$”时,它会起作用:

select ('test')

我不确定你真正想要做什么,你有三个"双引号字符,你可以尝试使用这个命令:

select '$(test)'

这将是:

sqlcmd -S SERVER -E -d DATABASE -q "select ''$(test)''"
于 2010-03-17T18:38:32.643 回答