Sql server 导入带前导零的数据-SQL Server

Sql server 导入带前导零的数据-SQL Server,sql-server,bulkinsert,leading-zero,Sql Server,Bulkinsert,Leading Zero,我正在尝试将数据导入表中。我正在做批量插入。我使用CREATE语句创建了这个表,其中所有字段都是nvarchar(max)。我无法理解为什么导入完成后,带前导零的数据已更改为科学符号。为什么不保留为文本并保留前导零?我建议您定义所需的零数,然后进行更新。下面是一个包含10个零的示例 create table #leadingZeros(uglynumber nvarchar(max),handsomenumber nvarchar(max),nicenumber nvarchar(max)) I

我正在尝试将数据导入表中。我正在做批量插入。我使用CREATE语句创建了这个表,其中所有字段都是nvarchar(max)。我无法理解为什么导入完成后,带前导零的数据已更改为科学符号。为什么不保留为文本并保留前导零?

我建议您定义所需的零数,然后进行更新。下面是一个包含10个零的示例

create table #leadingZeros(uglynumber nvarchar(max),handsomenumber nvarchar(max),nicenumber nvarchar(max))
INSERT INTO #leadingZeros VALUES(1000000,0000123,0500000)

SELECT * FROM #leadingZeros
--OUTPUT:
--uglynumber    handsomenumber  nicenumber
--1000000   123     500000
UPDATE #leadingZeros SET 
uglynumber=RIGHT('0000000000'+uglynumber,10)
,handsomenumber=RIGHT('0000000000'+handsomenumber,10)
,nicenumber=RIGHT('0000000000'+nicenumber,10)

SELECT * FROM #leadingZeros
--OUTPUT
--uglynumber    handsomenumber  nicenumber
--0001000000    0000000123  0000500000

你用什么做批量插入?您是如何指定输入的类型的?几乎没有执行大容量插入的机制关心目标表中的类型——它们只是将其留给SQL Server隐式执行转换。是否有一种方法可以导入目标表的类型?为什么每一列(SQL Server没有“字段”)都是
varchar(MAX)
?你真的需要2GB的存储空间来存储每一条数据吗?你的源数据是什么?“我猜,既然你得到了科学的记数法,那它就是卓越的吗?”拉努说得对。只是不确定字段中包含多少字符。据我所知,除非需要更多的空间,否则它存储为nvarchar(4000)。谢谢你对我术语的更正。我仍然需要一个关于前导零的答案。