C# 将int存储到SQL,但保留前导零

C# 将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字段

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


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

数字数据类型都不会保留前导零,因为它们对于要存储的数字来说无关紧要。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但是如果长度是固定的呢?那么这个问题有解决办法吗?