SQLCMD 问题 SQL 关键字

SQLCMD issues with SQL keywords

我有一个 SQLCMD,几乎可以像我想要的那样工作:

SQLCMD -s"," -S servername -U username -d databasename -W -o 
"mydatafile.csv” -Q "SET NOCOUNT ON 
SELECT Account,'""' + cast ([ColDescription] as 
nvarchar(100)) + '""' as ColumnDescription" FROM myTable

但是一旦我将 REPLACE 或 TRIM 之类的关键字添加到 SQL 语句中,或者即使我使用 CASE 语句,我也会从 CMD

中得到 'Unexpected Argument -press ? for help'
SQLCMD -s"," -S servername -U username -d databasename -W -o 
"mydatafile.csv” -Q "SET NOCOUNT ON 
SELECT Account,'""' + REPLACE(cast ([ColDescription] as nvarchar(100)),'"','""') + '""' as 
ColumnDescription" FROM myTable

是否因为 SQL 中我尝试使用的所有内容恰好也是 CMD 中的关键字?或者,我只是错过了一些非常重要的东西吗? SQL 查询本身工作正常并且 return 我在 SSMS 中设置的预期结果,所以我知道 SQL 是有效的。

我通过在 SQL 中使用 QUOTENAME 函数找到了解决问题的方法,如下所示:

SQLCMD -s"," -S servername -U username -d databasename -W -o 
"mydatafile.csv” -Q "SET NOCOUNT ON 
SELECT Account, QUOTENAME(cast ([ColDescription] as nvarchar(100)),'""') as 
ColumnDescription" FROM myTable

我在 QUOTENAME 函数中使用了 2 个双引号字符。但是,我仍然对其他回复感兴趣,他们可以 confirm/tell 我更多地了解为什么我使用 CASE、REPLACE 等的其他解决方案在 CMD 中不起作用。我仍然认为这些也应该有效......或者了解更多关于 CMD 的知识是否会帮助我找到可能有用的转义字符。