我的SQL Server 2012表中有一个字段定义为Int。但是当我尝试使用转换(Convert.toint32(textbox.text))从C#中的文本框中获取值时。假设文本框中包含数字0032,它将被保存到数据库中,因为它删除了00。
除了更改字段数据类型以外的任何解决方案??
答案 0 :(得分:3)
数字数据类型不保留前导零,因为它们对您要存储的数字无关紧要。 Char或Varchar更合适。您可以设置约束以确保仅存储数字字符。
如果绝对无法更改数据类型,则另一种方法是将前导零的数量存储到另一个int
字段中
所以在你的例子中你会存储:
价值:32
前导零:2
答案 1 :(得分:0)
所以以数字格式保存到数据库 - 忽略前导零(正如其他人提到的那样),然后像这个例子那样格式化:
int i = 32;
string format = "0000";
Console.WriteLine(i.ToString(format));
答案 2 :(得分:0)
数据类型由可以对它们执行的一组可能值和操作定义。
所以,这里的问题是:你将对这些价值观做些什么操作?求和,加法,乘......
如果答案为“否”,则将列的类型更改为varchar()
或char()
,并按原样将值存储为前导零。
如果是'是',则存储正确的号码并将格式保留给客户端。
在任何情况下,总是尝试在数据库中使用正确的数据类型,域完整性是一件好事。