Sql server 具有指定长度值的列

Sql server 具有指定长度值的列,sql-server,constraints,Sql Server,Constraints,我想用SQL Server创建一个列,它将接受精确为6位的值。不接受位数大于或小于的值。使用char(6)或Decimal(6,0) 但要强制它不能少于6位,您需要使用检查约束使用字符(6)或十进制(6,0) 但要强制执行它不能小于6位,您需要使用检查约束您可以使用SQL Server的。这是限制列中允许值的一种很好的方法 如果您的六位数始终为整数,则您的规则如下所示: ColumnA >= 100000 AND ColumnA <= 999999. ColumnA>=100000

我想用SQL Server创建一个列,它将接受精确为6位的值。不接受位数大于或小于的值。

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

但要强制它不能少于6位,您需要使用
检查约束
使用
字符(6)
十进制(6,0)

但要强制执行它不能小于6位,您需要使用
检查约束

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

如果您的六位数始终为整数,则您的规则如下所示:

ColumnA >= 100000 AND ColumnA <= 999999.
ColumnA>=100000,ColumnA您可以使用SQL Server来实现这一点。这是限制列中允许值的一种很好的方法

如果您的六位数始终为整数,则您的规则如下所示:

ColumnA >= 100000 AND ColumnA <= 999999.

ColumnA>=100000和ColumnA您可以使用一个简单的
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);
它会给我一个严重的错误信息:

Msg 547,16级,状态0,第7行INSERT语句冲突 使用检查约束“CK_CheckLength”。冲突发生在 数据库“master”,表“dbo.Test”,列“YourSixDigitColumn”。这个 声明已终止

这条SQL语句完美地工作:

INSERT INTO dbo.Test
VALUES (123456);

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

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);
它会给我一个严重的错误信息:

Msg 547,16级,状态0,第7行INSERT语句冲突 使用检查约束“CK_CheckLength”。冲突发生在 数据库“master”,表“dbo.Test”,列“YourSixDigitColumn”。这个 声明已终止

这条SQL语句完美地工作:

INSERT INTO dbo.Test
VALUES (123456);

我尝试使用这个
addconstraint[MinLengthConstraint]检查(DATALENGTH([your_column])=11)
但它不起作用为什么使用11?6个字符字符串的Datalength为6.Tab Alleman-您不能为此使用Datalength。它返回存储值所需的字节数。示例:整数1和999999的数据长度均为4。您可以使用LEN,但实际上这是用于字符串而不是数字@目标数据如果OP使用的是数字数据类型,则您是正确的。我尝试使用此
添加约束[MinLengthConstraint]检查(DATALENGTH([your_column])=11)
,但它不起作用为什么使用11?6个字符字符串的Datalength为6.Tab Alleman-您不能为此使用Datalength。它返回存储值所需的字节数。示例:整数1和999999的数据长度均为4。您可以使用LEN,但实际上这是用于字符串而不是数字@如果OP使用的是数字数据类型,则目标数据正确。