Подтвердить что ты не робот

Вставить двойные кавычки в вывод SQL

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

select * from People

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

First   Last      Email
Ray     Smith     [email protected]

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

"Ray","Smith","[email protected]"

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

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

4b9b3361

Ответ 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" и "||" находятся: '

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