将Excel导入SQL时保留前导零

时间:2014-01-23 20:40:40

标签: sql sql-server excel application-settings

我的办公室在将数据导入SQL数据库之前使用excel来准备我们的数据。但是,我们一直在表达以下错误。

从一台计算机导入数据时,它会丢失所有前导零。但是,当从不同的计算机导入时,它会完美导入。

前导零的示例是我们的项目编号需要格式化为“001,002,003,... 010,011,012,... 100,101,102等”。

1)excel文件存储在服务器上,因此文件没有区别。 2)如果用户交换工作站,结果将保留在计算机上,并且不会与用户切换。 3)数据格式为文本。它已从“数据”选项卡和“格式单元格”格式化为文本。

excel中是否有特定于计算机的设置,而不是影响导出数据的电子表格?或者是否存在非特定的特定设置会导致此问题?

3 个答案:

答案 0 :(得分:0)

在将数据插入数据库之前,不确定填充数据的好处是......(占用更多空间,搜索速度较慢等)。听起来你正在为输出(?)格式化它,这可能在其他地方更有效率。

但无论如何 - 这里有一些关于SELECT(sql)语句的想法:

RIGHT(1000 + [excel field], 3)

或另一个

REPLICATE('0', 3 - LEN([excel field])) + [excel field]

您可以对Excel字段本身执行的操作(在导入之前)使用'(撇号)作为前缀。请注意,如果您在Excel中输入0007,它会将其更改为7,但如果您输入'0007,则会保留前导零。

答案 1 :(得分:0)

根据您需要的前导零的数量,您可以在Excel中选择数据/列,进入Excel>>格式>>自定义>>在“类型”字段中键入您需要的多个零(即,对于带有前导零的9位数字,为000000000),它将自动以正确的前导零数作前缀,以使数字字符串具有正确的长度(即4000 = 00004000 )。

请注意,这仅适用于数字数据,而不适用于文本,但根据情况,以数字格式保留数据可能更有用 - 您仅提供列出的数值数据的示例,并且通常保留数字格式是有利于分析。

答案 2 :(得分:0)

最好避免使用'TEXT'格式选项。令人困惑的是,它不会强制单元格的内容成为文本数据类型,并且当公式引用“TEXT”格式时会造成严重破坏。

要添加到上一个答案(关于这是一个好主意的所有警告),您可以使用TEXT worksheet function

=TEXT(A1,"000")

如果需要,保证带有前导零的实际文本字符串。