将Excel导入SQL时保留前导零

问题描述 投票:3回答:3

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

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

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

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

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

sql sql-server excel application-settings
3个回答
0
投票

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

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


0
投票

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

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

RIGHT(1000 + [excel field], 3)

或者另一个

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

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


0
投票

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

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

=TEXT(A1,"000")

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

© www.soinside.com 2019 - 2024. All rights reserved.