首页 > 解决方案 > SQL 关键字的 SQLCMD 问题

问题描述

我有一个几乎可以像我想要的那样工作的 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 语句,我也会得到 'Unexpected Argument -press ? 来自 CMD 的帮助

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 查询本身工作正常,并在 SSMS 中返回我预期的结果集,所以我知道 SQL 是有效的。

标签: sqlcmd

解决方案


我通过在我的 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 个双引号字符。但是,我仍然会对其他可以确认/告诉我更多关于为什么我使用 CASE、REPLACE 等的其他解决方案在 CMD 中不起作用的回复感兴趣。我仍然认为这些也应该有效......或者了解更多关于 CMD 是否会帮助我找到可能有帮助的转义字符。


推荐阅读