SQL关键字的SQLCMD问题

时间:2019-03-21 13:09:54

标签: 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

但是,一旦我在SQL语句中添加了REPLACE或TRIM之类的关键字,或者即使我使用了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有效。

1 个答案:

答案 0 :(得分:0)

我在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可以帮助我找到可能有所帮助的转义字符。