Как правильно реализовать quotename в SQL Server?
Справочная Информация:
У меня есть хранимая процедура, которая заполняет отчет SSRS. Отчет SSRS запускается и экспортируется в формате CSV. Затем он открывается как текстовый файл и выполняется через приложение поставщика 3-х сторон.
Выходные данные учебника должны выглядеть следующим образом:
lid, status, i_flag,Count, pDate, iDate
62558633,"Text Value","08/16",11,"08/16","08/16"
78013526,"Text Value","",,"08/16""08/16"
Мои результаты выглядят так:
lid, status, i_flag,Count,pDate,iDate
19007442,"'Dir,MgmtII'",'',2,'','02/16'
17343623,'Text','',0,'11/15','02/16'
Теперь код, который я использую:
SELECT
quotename(isnull(i_flag,''''), '''') as i_flag,
isnull(lid, 0) as lid,
quotename(isnull(status,''''), '''') as status,
isnull(Count, 0) as Count,
quotename(isnull(p_Date,''''), '''') as p_Date,
quotename(isnull(i_Date,''''), '''') as i_Date
FROM
#Table
Любые идеи о том, как я могу это исправить. Я был немного озадачен этим. Спасибо.
1 ответ:
Если я правильно понял ваш вопрос (что вполне возможно), я думаю, что вы хотите:
SELECT QUOTENAME(ISNULL(i_flag,''), '"') AS i_flag, ISNULL(lid, 0) AS lid, QUOTENAME(ISNULL([status],''), '"') AS [status], ISNULL([Count], 0) AS [Count], QUOTENAME(ISNULL(p_Date,''), '"') AS p_Date, QUOTENAME(ISNULL(i_Date,''), '"') AS i_Date FROM #TableПохоже, что у вас есть некоторые значения в полях, которые вы хотите заключить в двойные кавычки
"для экспорта в CSV, плюс в некоторых случаях значения в этих полях могут быть пустыми.Мое предложение выше обрабатывает это, сначала используя
ISNULL, чтобы заменить любые нулевые значения пустой строкой, а затем используяQUOTENAME, чтобы обернуть полученное значение в double двойные кавычки.Решающими отличиями вашего опубликованного кода являются:
- при использовании
ISNULLя заменяю NULL пустой строкой''вместо строки, содержащей символ одинарной кавычки''''(две последовательные одинарные кавычки в строке представляют собой экранированный литеральный символ одинарной кавычки)- при использовании
QUOTENAMEдля обертывания значений в двойные кавычки я указываю строку, содержащую двойную кавычку'"'во втором параметре, вместо строки, содержащей одну кавычки''''.Я надеюсь, что это поможет вам - если у вас все еще есть проблемы, возможно, вы могли бы предоставить некоторые примеры строк из вашей временной таблицы
#Tableи выходные данные, которые вы ожидаете от запроса, чтобы люди могли помочь вам дальше.Кроме того, не рекомендуется использовать зарезервированные ключевые слова SQL, такие как
statusилиcountв качестве имен столбцов или псевдонимов, но если это необходимо, я бы рекомендовал заключить их в квадратные скобки (т. е.[status]) Для удобства чтения (особенно в SSMS или любой IDE с подсветкой синтаксиса SQL или цветовым кодированием), как я сделал выше.
Comments