Вставьте двойные кавычки в вывод SQL - PullRequest
17 голосов
/ 06 июня 2011

После запуска запроса и просмотра вывода, например

select * from People

Мой вывод выглядит следующим образом

First   Last      Email
Ray     Smith     raysmith@whatever.itis

Как мне экспортировать эти данные, чтобы они выглядели следующим образом?

"Ray","Smith","raysmith@whatever.itis"

Или есть способ сделать это в SQL, чтобы изменить записи, содержащие кавычки?

Потому что, когда вы экспортируете, в любом случае он будет содержать запятые, верно?

Ответы [ 6 ]

21 голосов
/ 06 июня 2011

Если интересующие вас столбцы имеют 128 символов или менее, вы можете использовать функцию QUOTENAME .Будьте осторожны с этим, так как более 128 символов вернут NULL.

SELECT QUOTENAME(First, '"'), QUOTENAME(Last, '"'), QUOTENAME(Email, '"')
    FROM People
4 голосов
/ 06 июня 2011
select '"'+first+'","'+last+'","'+email+'"'
from people

Это то, что лучше всего делать в коде, однако вы не должны запрашивать для презентации .

2 голосов
/ 06 июня 2011

выберите concat («\" », сначала« \ »», «\» », Last,« \ »», «\" », Email,« \ "») как allInOne

1 голос
/ 06 июня 2011

Изменение записей, содержащих цитаты, было бы катастрофой; Вы не используете данные только для экспорта. Кроме того, теоретически вам придется иметь дело с такими именами, как:

 Thomas "The Alley Cat" O'Malley

, что представляет некоторые проблемы.

В стандартном SQL вы должны использовать двойные одинарные кавычки для заключения одинарных кавычек (без специальной обработки для двойных кавычек):

'"Thomas "The Alley Cat" O''Malley"'

Некоторые СУБД позволяют использовать двойные кавычки вокруг строк (в стандартном SQL двойные кавычки обозначают «идентификатор с разделителями»; для этого SQL Server использует квадратные скобки), в этом случае вы можете написать строку как:

"""Thomas ""The Alley Cat"" O'Malley"""

Обычно, однако, ваши инструменты экспорта предоставляют форматирование выходных данных CSV, и вашему оператору SQL не нужно беспокоиться об этом. Встроенные кавычки делают все остальное проблематичным. Действительно, обычно вы не должны заставлять СУБД разбираться с форматированием данных.

0 голосов
/ 14 июля 2017

Если вы используете MS SQL Server, попробуйте что-то вроде:

SELECT '"'||Table.Column||'"'
  FROM Table

- обратите внимание, что первые 3 символа между «SELECT» и «||»are: '"'

- Символы одинаковые после" || "в конце ... таким образом, вы получаете" на каждой стороне вашего значения.

0 голосов
/ 12 июня 2017

Это сработало лучше всего для меня

SELECT 'UPDATE [dbo].[DirTree1] SET FLD2UPDATE=',QUOTENAME(FLD2UPDATE,'''')
+' WHERE KEYFLD='+QUOTENAME(KEYFLD,'''')
FROM [dbo].[Table1]
WHERE SUBSTRING(FLD2UPDATE,1,2) = 'MX'
order by 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...