具有指定长度值的列

时间:2015-12-15 15:35:40

标签: sql-server constraints

我想用SQL Server创建一个列,该列可以接受精确6位数的值。不接受具有更多或更少位数的值。

3 个答案:

答案 0 :(得分:3)

您可以使用简单的CHECK约束并检查列长度。这已经被告知了,但是没有发布解决方案,所以我在这里:

CREATE TABLE dbo.Test
(
    YourSixDigitColumn INT
    , CONSTRAINT CK_CheckLength CHECK (LEN(YourSixDigitColumn) = 6)
);

如果我尝试插入其中一个:

INSERT INTO dbo.Test
VALUES (12345);

INSERT INTO dbo.Test
VALUES (1234567);

它会给我带来这个令人讨厌的错误信息:

  

消息547,级别16,状态0,行7 INSERT语句冲突   使用CHECK约束“CK_CheckLength”。冲突发生在   数据库“master”,表“dbo.Test”,列'YourSixDigitColumn'。该   声明已被终止。

这个SQL语句完美无缺:

INSERT INTO dbo.Test
VALUES (123456);

答案 1 :(得分:1)

使用char(6)Decimal(6,0)

但要强制它不能少于6位,您需要使用check constraint

答案 2 :(得分:1)

您可以使用SQL Server的Check Constraints。这是限制列中允许值的好方法。

如果你的六位数字总是一个整数,你的规则就是这样:

ColumnA >= 100000 AND ColumnA <= 999999.