将int存储到SQL,但保持前导零

时间:2014-04-26 09:41:54

标签: c# sql-server type-conversion sqldatatypes

我的SQL Server 2012表中有一个字段定义为Int。但是当我尝试使用转换(Convert.toint32(textbox.text))从C#中的文本框中获取值时。假设文本框中包含数字0032,它将被保存到数据库中,因为它删除了00。

除了更改字段数据类型以外的任何解决方案??

3 个答案:

答案 0 :(得分:3)

数字数据类型不保留前导零,因为它们对您要存储的数字无关紧要。 Char或Varchar更合适。您可以设置约束以确保仅存储数字字符。

如果绝对无法更改数据类型,则另一种方法是将前导零的数量存储到另一个int字段中

所以在你的例子中你会存储:
  价值:32
  前导零:2

答案 1 :(得分:0)

所以以数字格式保存到数据库 - 忽略前导零(正如其他人提到的那样),然后像这个例子那样格式化:

int i  = 32;
string format = "0000";
Console.WriteLine(i.ToString(format));

答案 2 :(得分:0)

数据类型由可以对它们执行的一组可能值和操作定义。

所以,这里的问题是:你将对这些价值观做些什么操作?求和,加法,乘......

如果答案为“否”,则将列的类型更改为varchar()char(),并按原样将值存储为前导零。

如果是'是',则存储正确的号码并将格式保留给客户端。

在任何情况下,总是尝试在数据库中使用正确的数据类型,域完整性是一件好事。