防止在从sql server输出到csv时删除前导零
嗨,我有一个SQL脚本,它将一些数据列输出到csv文件中,其中一列是电话号码。脚本运行良好,但是电话号码中的前导零被删除。现在我知道了为什么在excel中打开包含电话号码的csv时,会从电话号码中删除前导零 我正在苦苦挣扎的是SQL脚本,它将电话号码用双引号括起来,以便在打开时将其解释为文本。请参见下面的“我的sql”:防止在从sql server输出到csv时删除前导零,sql,Sql,嗨,我有一个SQL脚本,它将一些数据列输出到csv文件中,其中一列是电话号码。脚本运行良好,但是电话号码中的前导零被删除。现在我知道了为什么在excel中打开包含电话号码的csv时,会从电话号码中删除前导零 我正在苦苦挣扎的是SQL脚本,它将电话号码用双引号括起来,以便在打开时将其解释为文本。请参见下面的“我的sql”: SET @query =' SELECT ''MobilePhoneNumber'' AS MobilePhoneNumber ,''RequestNumber
SET @query ='
SELECT
''MobilePhoneNumber'' AS MobilePhoneNumber
,''RequestNumber'' AS RequestNumber
,''RequestDate'' AS RequestDate
,''RequestType'' AS RequestType
,''Status'' AS Status
UNION ALL
SELECT
[MobilePhoneNumber] --I Want to get this column in the csv as EG "01234123456"
,[RequestNumber]
,CONVERT(VARCHAR,[RequestDate],120)
,[RequestType]
,[Status]
FROM [Mobiles].[dbo].[Requests]
WHERE [RequestType] = ''Cease''
AND DATEDIFF(mm,Requestdate , GETDATE())=1;'
试试这个:
'...
SELECT
CHAR(34) + [MobilePhoneNumber] + CHAR(34)
...'
或
试试这个:
'...
SELECT
CHAR(34) + [MobilePhoneNumber] + CHAR(34)
...'
或
感谢@KekuSemau的建议,我的解决方案最终将惠及他人:
SET @query ='
SELECT
''MobilePhoneNumber'' AS MobilePhoneNumber
,''RequestNumber'' AS RequestNumber
,''RequestDate'' AS RequestDate
,''RequestType'' AS RequestType
,''Status'' AS Status
UNION ALL
SELECT
CHAR(39) +[MobilePhoneNumber] -- < I simply added the CHAR(39)
,[RequestNumber]
,CONVERT(VARCHAR,[RequestDate],120)
,[RequestType]
,[Status]
FROM [Mobiles].[dbo].[Requests]
WHERE [RequestType] = ''Cease''
AND DATEDIFF(mm,Requestdate , GETDATE())=1;'
感谢@KekuSemau的建议,我的解决方案最终将惠及他人:
SET @query ='
SELECT
''MobilePhoneNumber'' AS MobilePhoneNumber
,''RequestNumber'' AS RequestNumber
,''RequestDate'' AS RequestDate
,''RequestType'' AS RequestType
,''Status'' AS Status
UNION ALL
SELECT
CHAR(39) +[MobilePhoneNumber] -- < I simply added the CHAR(39)
,[RequestNumber]
,CONVERT(VARCHAR,[RequestDate],120)
,[RequestType]
,[Status]
FROM [Mobiles].[dbo].[Requests]
WHERE [RequestType] = ''Cease''
AND DATEDIFF(mm,Requestdate , GETDATE())=1;'
你不能像RequestDate那样将MobilePhoneNumber转换为VARCHAR,或者这仍然会删除零吗?我认为如果你在csv输出中的数字前面添加单引号,excel将正确显示它。我使用了CHAR96+[MobilePhoneNumber],并且它起到了治疗作用。你的标题具有误导性。输出到CSV文件时,前导零似乎没有去除,是Excel在打开CSV时将其删除。顺便说一句,您可以将最终解决方案作为答案发布为“接受”该解决方案。所以其他人可以看到这个问题已经解决了。你不能像RequestDate那样将MobilePhoneNumber转换为VARCHAR,或者这仍然会删除零吗?我认为如果你在csv输出中的数字前面添加单引号,excel将正确显示它我使用的字符96+[MobilePhoneNumber]你的标题有误导性。输出到CSV文件时,前导零似乎没有去除,是Excel在打开CSV时将其删除。顺便说一句,您可以将最终解决方案作为答案发布为“接受”该解决方案。所以其他人可以看到这个问题已经解决了。它确实像预期的那样围绕着电话号码,但excel忽略了它并去掉了零,但我只是这样做了:CHAR96+[MobilePhoneNumber],它工作了,它也打开了:它确实像预期的那样围绕着电话号码,但excel忽略了它并去掉了零,但我只是这么做了:CHAR96+[MobilePhoneNumber],它成功了,它也打开了: