C# 将int存储到SQL,但保留前导零
我的SQL Server 2012表中有一个字段定义为Int。但是当我尝试使用转换(Convert.toint32(textbox.text))从C#中的文本框中获取值时。假设文本框包含数字0032,它将以32的形式保存到数据库中,删除00C# 将int存储到SQL,但保留前导零,c#,sql-server,type-conversion,sqldatatypes,C#,Sql Server,Type Conversion,Sqldatatypes,我的SQL Server 2012表中有一个字段定义为Int。但是当我尝试使用转换(Convert.toint32(textbox.text))从C#中的文本框中获取值时。假设文本框包含数字0032,它将以32的形式保存到数据库中,删除00 除更改字段数据类型之外的任何解决方案???数字数据类型都不会保留前导零,因为它们对于要存储的数字来说无关紧要。Char或Varchar更合适。您可以设置一个约束以确保只存储数字字符 如果绝对无法更改数据类型,则另一种选择是将前导零的数量存储到另一个int字段
除更改字段数据类型之外的任何解决方案???数字数据类型都不会保留前导零,因为它们对于要存储的数字来说无关紧要。Char或Varchar更合适。您可以设置一个约束以确保只存储数字字符 如果绝对无法更改数据类型,则另一种选择是将前导零的数量存储到另一个
int
字段中
因此,在您的示例中,您将存储:值:32
前导零:2因此以数字格式保存到数据库-忽略前导零(如其他人所述),然后按照以下示例进行格式化:
int i = 32;
string format = "0000";
Console.WriteLine(i.ToString(format));
数据类型由一组可能的值和可以对其执行的操作定义 所以,这里的问题是:你会对这些值做什么操作?求和、加法、乘法 如果答案为“否”,则将列的类型更改为
varchar()
或char()
并按原样存储值,前导为零
如果是“是”,则存储一个正确的数字,并将格式设置留给客户端
在任何情况下,始终尝试在数据库中使用正确的数据类型,域完整性是一件好事。
0032
只是32
的字符串表示形式。您应该将值保存在db中(在本例中为32
),并在根据需要打印时使用一些格式化逻辑。在这种情况下,需要的操作比直接从db调用要多。它是一个发票编号字段,应该以零开头。@OJazem使应用程序格式化显示的发票ID。创建一个助手函数。@dean,不,长度不是固定的。@dean但是如果长度是固定的呢?那么这个问题有解决办法吗?