【发布时间】:2013-02-01 21:52:55
【问题描述】:
我在将存储过程的结果导出到 csv 文件并将结果保存为 9 个字符的字符串时遇到问题。存储过程的结果是一个简单的单列输出,在 SSMS 中执行时看起来很好,但 csv 中具有前导零的返回值在返回时没有零。表格列的类型为varchar(13),我进行了转换以尝试保持前导零不被丢弃,但没有运气。
这是存储过程:
SELECT DISTINCT
convert(char(8),n.NIIN)
FROM IMMS_ELEC.dbo.NIINList n
这是我正在使用的简单 BCP 脚本:
DECLARE @string AS NVARCHAR(4000)
SELECT @string = 'BCP "exec CPLINK_Dev.dbo.spSelectLOG_NiinDistinct"
QUERYOUT:\data.csv -c -T -t'
exec master.dbo.xp_cmdshell @string
【问题讨论】:
-
尝试 SELECT DISTINCT '"'+convert(char(8),n.NIIN)+'"' FROM IMMS_ELEC.dbo.NIINList n。如果您在任一侧添加引号,CSV 应将其视为文本并保留前导零
-
我试过了,但结果是一样的。
-
您用什么程序打开 CSV?如果你用记事本打开它,那里有前导零吗? Excel 将通过将它们转换为数字来“帮助”您
-
@Sparky,如果我在记事本 ++ 中打开它,我会得到我期望的 9 个字符的输出。如果我在 Excel 中打开它,则会删除前导零。很有趣。
-
这意味着问题不在于您的 SQL 输出,而在于 Excel。尝试在前面添加单引号,看看是否允许 Excel 将其视为文本...
标签: sql sql-server tsql stored-procedures