在SQL输出中插入双引号

时间:2011-06-06 14:48:28

标签: sql sql-server tsql sql-server-2008

运行查询并查看输出后,例如

select * from People

我的输出如下

First   Last      Email
Ray     Smith     raysmith@whatever.itis

如何导出此数据,使其如下所示?

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

或者有没有办法在SQL中修改记录以包含引号?

因为当你导出时,它会包含逗号,对吧?

6 个答案:

答案 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个字符和" ||"是: ' " '

- " ||"之后的字符是相同的。最后......那样你得到一个"在你价值的每一面。