Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server将存储过程结果导出为CSV文件,保持char(9)格式_Sql_Sql Server_Tsql_Stored Procedures - Fatal编程技术网

SQL Server将存储过程结果导出为CSV文件,保持char(9)格式

SQL Server将存储过程结果导出为CSV文件,保持char(9)格式,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我在将存储过程的结果导出到csv文件并将结果保留为9个字符串时遇到问题。存储过程的结果是一个简单的单列输出,在SSMS中执行时看起来很好,但是返回csv中具有前导零的返回值时没有返回零。table列的类型是varchar(13),我做了一次转换,试图避免前导零被删除,但没有成功 以下是存储过程: SELECT DISTINCT convert(char(8),n.NIIN) FROM IMMS_ELEC.dbo.NIINList n 下面是我正在使用的简单BCP脚本: DECLARE @str

我在将存储过程的结果导出到csv文件并将结果保留为9个字符串时遇到问题。存储过程的结果是一个简单的单列输出,在SSMS中执行时看起来很好,但是返回csv中具有前导零的返回值时没有返回零。table列的类型是
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

Excel喜欢认为它比您更了解如何格式化数据。。。这里有一个技巧,你可以用来智取它。打开一个新的电子表格,选择所有单元格并将类型更改为文本(从常规),然后从记事本(或SSMS)复制数据,将其粘贴到Excel中,如果需要,则使用文本到列。。。Excel应该停止干扰你的格式


您也可以对从Excel导入数据执行同样的操作,但我发现第一种方法更有效,您也可以使用它直接从SSMS网格结果中复制和粘贴。

尝试从IMMS_ELEC.dbo.NIINList n中选择DISTINCT'''+convert(char(8),n.NIIN)+''。如果你在任何一方添加一个引号,CSV应该将其视为文本并保持前导零。我尝试过这样做,但结果是一样的。你用什么程序打开CSV?如果你用记事本打开它,前导的零在那里吗?Excel将通过将它们转换为numbers@Sparky,如果我在记事本++中打开它,我会得到预期的9个字符的输出。如果我在Excel中打开它,前导的零将被删除。有趣。这意味着问题不在SQL输出中,而在Excel中。尝试在前面添加一个引号,看看是否允许Excel以文本形式查看它。。。