我已将两个记录插入到表中。
create table num(id int)
insert into num values(0023)
insert into num values(23)
select * from num
当我查询它们时,它们都显示为23
。这意味着SQL Server忽略前导0。其背后的机制是什么?在插入值时,SQL Server如何返回值(即0023
和23
)?
您究竟如何期望0023在数据库中编码为不同于23或023或0000000023的内容?它们都代表相同的NUMBER。而int是NUMBER数据类型。服务器没有位置存储此“十进制零的前导数”值。
—
ErikE 2012年
这是一个很糟糕的问题,任何编程类的介绍都将涵盖这个问题。由于int的性质,int永远无法存储前导零。这可以通过查看任意数量的Web资源来解决。这不需要数据库管理员的输入。
—
jcolebrand
隐含前导零。除了使用字符串之外,如果需要特定数量的前导零,那么这是除int列中存储的信息以外的其他信息。一种选择是使用字符串列,而另一种选择是将前导零的数目存储在另一列或用户界面中。例如,如果UI始终格式化为4位数字,并以零开头的填充,则表明您已将此信息存储在UI中。如果您需要零位数来变化并为每个记录保留,您可以将该信息存储在单独的字段中。
—
Dave Cousineau
id
则应为类型VARCHAR
或类似类型。