Вставить двойные кавычки в вывод SQL
После запуска запроса и просмотра вывода, например
select * from People
Мой вывод выглядит следующим образом
First Last Email
Ray Smith [email protected]
Как я могу экспортировать эти данные, чтобы они выглядели следующим образом?
"Ray","Smith","[email protected]"
Или есть ли способ сделать это в SQL для изменения записей, чтобы содержать кавычки?
Потому что, когда вы экспортируете, он будет включать запятые в любом случае, правильно?
Ответы
Ответ 1
Если интересующие вас столбцы составляют 128 символов или меньше, вы можете использовать функцию QUOTENAME. Будьте осторожны с этим, поскольку что-нибудь более 128 символов вернет NULL
.
SELECT QUOTENAME(First, '"'), QUOTENAME(Last, '"'), QUOTENAME(Email, '"')
FROM People
Ответ 2
select '"'+first+'","'+last+'","'+email+'"'
from people
Это то, что лучше всего делать в коде, однако вы не должны запрашивать презентацию.
Ответ 3
выберите concat ( "\" ", сначала "\ "", "\" ", Last, "\ "", "\" ", Email, "\ "" ) как allInOne
Ответ 4
Изменение записей, содержащих кавычки, будет катастрофой; вы не используете данные только для экспорта. Кроме того, теоретически вам придется иметь дело с такими именами, как:
Thomas "The Alley Cat" O'Malley
который представляет некоторые проблемы.
В стандартном SQL вы должны использовать двойные одинарные кавычки, чтобы заключить одинарные кавычки (без специальной обработки для двойных кавычек):
'"Thomas "The Alley Cat" O''Malley"'
Некоторые СУБД позволяют использовать двойные кавычки вокруг строк (в стандартном SQL двойные кавычки указывают "разделительный идентификатор", SQL Server использует для этого квадратные скобки), и в этом случае вы можете написать строку как:
"""Thomas ""The Alley Cat"" O'Malley"""
Как правило, ваши инструменты-экспортеры предоставляют форматирование вывода CSV, и ваш SQL-запрос не должен беспокоиться об этом. Встроенные цитаты делают что-то еще проблематичным. В самом деле, вы обычно не должны делать СУБД с форматированием данных.
Ответ 5
Это сработало лучше для меня
SELECT 'UPDATE [dbo].[DirTree1] SET FLD2UPDATE=',QUOTENAME(FLD2UPDATE,'''')
+' WHERE KEYFLD='+QUOTENAME(KEYFLD,'''')
FROM [dbo].[Table1]
WHERE SUBSTRING(FLD2UPDATE,1,2) = 'MX'
order by 2
Ответ 6
Если вы используете MS SQL Server, попробуйте что-то вроде:
SELECT '"'||Table.Column||'"'
FROM Table
- Обратите внимание, что первые 3 символа между "SELECT" и "||" находятся:
'
- Символы совпадают после символов "||" в конце... таким образом вы получаете "с каждой стороны от вашего значения".