SQLCMD проблемы с ключевыми словами SQL - PullRequest
0 голосов
/ 21 марта 2019

У меня есть 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, я получаю 'неожиданный аргумент -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 голосов
/ 21 марта 2019

Я нашел способ обойти мою проблему, используя функцию QUOTENAME в своем SQL, например:

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

Где я использую 2 символа двойной кавычки в функции QUOTENAME.Но мне все равно были бы интересны другие ответы, которые могут подтвердить / рассказать больше о том, ПОЧЕМУ другие мои решения, использующие CASE, REPLACE и т. Д., Не работали в CMD.Я все еще думаю, что они тоже должны были сработать ... или знание о CMD помогло бы мне найти escape-символы, которые могли бы помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...