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

Posted

技术标签:

【中文标题】将 int 存储到 SQL,但保持前导零【英文标题】:Storing an int to SQL, but keep leading zeros 【发布时间】:2014-06-12 02:41:29 【问题描述】:

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

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

【问题讨论】:

0032 只是32 的字符串表示形式。您应该将值保存在 db 中(在这种情况下为32),并在打印时根据需要使用一些格式化逻辑。 在这种情况下,它会比直接从 db 调用它需要太多的操作。它是一个发票编号字段,它应该以零开头。 @OJazem 使应用程序格式化显示的发票 ID。创建一个辅助函数。 @dean,不,长度不固定。 @dean 但是如果长度是固定的呢?那么这个问题有解决方案吗? 【参考方案1】:

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

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

因此,在您的示例中,您将存储: 价值 : 32 前导零:2

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

数据类型由一组可能的值和可以对其进行的操作来定义。

所以,这里的问题是:您将对这些值执行哪些操作?求和、加法、乘法……?

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

如果是“是”,则存储一个正确的数字并将格式留给客户端。

无论如何,请始终尝试在数据库中使用适当的数据类型,域完整性是一件好事。

【讨论】:

以上是关于将 int 存储到 SQL,但保持前导零的主要内容,如果未能解决你的问题,请参考以下文章

在 C 中存储前导零

使用 Pandas 读取 CSV 时如何在列中保持前导零?

在保持正确对齐的同时消除前导零

将前导零附加到给定值[重复]

sql 将SQL复制并粘贴到Excel时保留前导零

在C中保持前导零[重复]