我想用SQL Server创建一个列,该列可以接受精确6位数的值。不接受具有更多或更少位数的值。
答案 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.