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