1

我想存储长度超过 20 位但未定义最大长度的数字。

我搜索保存输入并找到的最大值的数据类型varchar(max),我想要类似numeric(max)但不存在的东西。

我应该使用什么,可以使用,varchar(max)但是如何验证号码?

4

3 回答 3

1

bigint范围为 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807),因此可以满足您的需求。

SQL Server 中没有更大的整数类型,因此您可能不得不接受基于字符的字段(与将数字数据存储在文本字段中相关的所有转换和排序问题)。

于 2012-10-04T09:11:30.653 回答
1

据此,_

数据类型“float”肯定具有最大的数字支持,并支持 309 (!!!) 位的数字。

这取决于您的数字是否为整数,实数,可能为负数..

如果您打算使用 avarchar(max)来存储数字,请仔细考虑。数据库中列的类型(对我而言)是确保数据一致性的最重要的一点。所以这是可能的,但真的有必要吗?

于 2012-10-04T09:12:27.210 回答
1

可以使用varchar(max)但是我如何验证号码?

您可以使用检查约束:

CREATE TABLE Numbers (
     n varchar(max) not null,
     constraint CK_Numeric CHECK (n not like '%[^0-9]%')
)

检查约束确保n列中没有字符来自 0-9 范围之外。这是一个双重否定,但它是表达条件的最简单方法。如果值可以包含小数,您可能需要更复杂的检查:

CREATE TABLE Decimals (
     d varchar(max) not null,
     constraint CK_Numeric CHECK (
        d not like '%[^0-9.]%' AND
        LEN(d) - LEN(REPLACE(d,'.','')) in (0,1))
)

这就是说.现在允许,并且LEN检查确保它仅在字符串中出现 0 或 1 次。

于 2012-10-04T09:25:13.330 回答