我正在尝试将查询结果导出到 CSV,然后最终导出到 Excel。
我的问题是,我的其中一列中有逗号,并且逗号会中断 Excel 在正确位置解析 CSV。
我没有数据库的写入权限,因此无法将查询结果放入表中,然后将该表导出到 Excel。
有没有办法导出到 Excel,或者至少导出到包含逗号的列的 CSV?
如果您可以查询数据库,则可以使用类似的方法来检索没有列的数据。
DECLARE @String varchar(25) = 'Comman delimited, value.'
SELECT REPLACE(@String, ',', ' ') AS ScrubbedValue
使用替换函数将逗号替换为竖线或其他字符。 在 Excel 中,如果需要,可以使用 Excel 的替换将管道恢复为逗号。
select
Date = a.Date_Time,
Action = Type,
Username = a.username,
Desc = replace( description,',','|'), -- replace pesky commas
from
dbo.AuditLog a
where
a.Date_Time > DATEADD( DAY, -1, getdate())
如果您使用 @MikaelEliasson 的解决方案,您实际上可以毫无问题地保存到 CSV - SSMS 会自动用双引号将包含逗号的任何数据括起来。只需右键单击,将结果另存为...数据网格结果上的任意位置。
要包含标题行,请导航至工具→选项→查询结果→结果到网格,并确保选中“复制或保存结果时包含列标题”。
如果任何字段有前导零,Excel 将截断它们(即使您转换为文本)。为了避免这种情况,请使用
"=""MyLeadingZeroField"""
,所以:
SELECT CONCAT('"=""', MyLeadingZeroField, '"""')
在 Excel 中打开后将正确显示。
如果您尝试使用前导单引号或用单引号括起来的解决方案,这实际上不起作用,因为它们将显示在 Excel 中。