运行查询并查看输出后,例如
select * from People
我的输出如下
First Last Email
Ray Smith raysmith@whatever.itis
如何导出此数据,使其如下所示?
"Ray","Smith","raysmith@whatever.itis"
或者有没有办法在SQL中修改记录以包含引号?
因为当你导出时,它会包含逗号,对吧?
答案 0 :(得分:21)
如果您感兴趣的列不超过128个字符,则可以使用QUOTENAME函数。请注意,超过128个字符的任何内容都将返回NULL
。
SELECT QUOTENAME(First, '"'), QUOTENAME(Last, '"'), QUOTENAME(Email, '"')
FROM People
答案 1 :(得分:4)
select '"'+first+'","'+last+'","'+email+'"'
from people
这是在代码中做得最好的事情,但是你不应该查询 presentation 。
答案 2 :(得分:2)
选择concat(“\”“,first,”\“”,“\”“,Last,”\“”,“\”“,电子邮件,”\“”)as allInOne
答案 3 :(得分:1)
修改包含引号的记录将是一场灾难;您不要仅将数据用于导出。此外,从理论上讲,你必须处理如下名称:
Thomas "The Alley Cat" O'Malley
提出了一些问题。
在标准SQL中,您使用双引号单引号括起单引号(对双引号没有特殊处理):
'"Thomas "The Alley Cat" O''Malley"'
某些DBMS允许您在字符串周围使用双引号(在标准SQL中,双引号表示'分隔标识符'; SQL Server使用方括号表示),在这种情况下,您可以将字符串写为:
"""Thomas ""The Alley Cat"" O'Malley"""
但是,通常情况下,您的导出工具提供CSV输出格式,您的SQL语句无需担心。嵌入式引号会造成其他问题。实际上,您通常不应该让DBMS处理数据的格式化。
答案 4 :(得分:0)
这对我来说效果最好
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 :(得分:0)
如果您使用的是MS SQL Server,请尝试以下操作:
SELECT '"'||Table.Column||'"'
FROM Table
- 请注意" SELECT"之间的前3个字符和" ||"是: ' " '
- " ||"之后的字符是相同的。最后......那样你得到一个"在你价值的每一面。