【问题标题】:How to insert a 12 digit number into the databaase如何将 12 位数字插入数据库
【发布时间】:2020-12-25 01:07:47
【问题描述】:

我正在使用 ASP.NET MVC 和 SQL Server,我想存储一个 12 位的值,即 221133556677。

这是我想存储值的地方,所以 Int36 最多只能存储 10 位。

那么如何将数据类型更改为 numeric(12,0) 以存储 12 位值。

[Display(Name = "IC")]
[Required(AllowEmptyStrings = false, ErrorMessage = "IC is required")]
public int IC { get; set; }

【问题讨论】:

  • 您可以使用int64 (long)。见here
  • 您可能指的是 Int32 而不是 Int36 - 无论如何只需使用 Int64(即 c# long 和 SQL Server BigInt)。
  • 你想用那个号码做什么?你用它计算过吗?一个 varchar 列可能就足够了吗?

标签: sql-server asp.net-mvc


【解决方案1】:

所以 Int36 最多只能存储 10 位。

在世界上所有遵循标准架构的计算机中,没有 INT36 之类的东西。字节是 8 位,所以是 32。不是 36。

自古以来,Int64 也是一回事。规模要大得多。

在 SQL Server 中,它被命名为 BIGINT,其规模可能会让您大吃一惊:

2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)

结案了吗?

哦,不……

那么如何将数据类型更改为 numeric(12,0) 以存储 12 位数字 价值。

就这么做?让我们从使用 int 的 C# 端代码开始 - 不长。 Int 是 32 位(不是 26 位)。只需将其更改为 - 哦,您坚持使用数字(十进制)?啊,使用 Decimal 而不是 int。完毕。否则我会在数据库上使用 long 和 bigint。

但请注意,此“数字”可能不是数字。它是一个数字字符串。如果您可能需要一天时间进行部分搜索并且永远不会使用平均值、总和等内容,那么将其存储为数字毫无意义。

现在,您可能想阅读一些文档:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-ver15

具有所有 SQL Server 数据类型。这有助于您不要忽略明显的更大规模数据类型。

【讨论】:

    【解决方案2】:

    根据 SQL Server 文档,您可以使用BIGINT

    它是一个有符号的 64 位整数,范围为 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)。

    https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-data-type-mappings

    据我所知,指定数字的大小不会影响它可以存储在 SQL Server 中的数字的大小,只会影响使用 ZEROFILL 的时间

    What is the size of column of int(11) in mysql in bytes?

    【讨论】:

      【解决方案3】:

      long 可以存储 12 位数字就好了。所以在你的 C# 中使用 long 而不是 int。

              long twelveDigits = 221133556677;
              Console.WriteLine($"\nHere is twelve digit number, {twelveDigits}.");
              Console.Write("\nPress any key to exit...");
              Console.ReadKey(true);
      

      请看这里:Long data type MSDocs

      SQLServer 的数据类型为 bigint 见这里:int, bigint, smallint, and tinyint (Transact-SQL) 和:www.sqlservertutorial.net

      这些应该会让你得到照顾。

      【讨论】:

        猜你喜欢
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-06
        • 2012-12-20
        • 2015-12-09
        • 2019-10-25
        相关资源
        最近更新 更多