SQL Server - 限制数据类型以获取指定大小的输入

时间:2014-04-10 07:43:19

标签: sql-server

假设我将sqlserver数据库中的数据类型声明为Varchar(20)。这意味着它可以允许输入长度等于或小于20个字符。

但是我的要求是我需要Varchar(20)来获取确切的输入长度,即如果它的长度不是20,它就不应该接受输入。

我们可以这样做吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您始终可以向列添加检查约束,以验证其值的长度为20.此外,您应该考虑使用CHAR(20)数据类型而不是VARCHAR(20)。

向列" MyColumn"添加检查约束表" MyTable",执行此操作:

ALTER 
TABLE MyTable ADD CHECK (LEN(MyColumn)=20)

答案 1 :(得分:2)

如果您乐意将字符串填充为20个字符,则可以使用char(20)而不是varchar(20)来强制使用20个字符。

如果你不想填充最佳位置来验证它将在应用程序中,然后在插入逻辑中进行备份检查,检查长度是20,例如len(@MyString) = 20;并且不执行插入操作,如果失败则将消息返回给应用程序。

如果使用直接插入进行插入,则可以对要求长度为20的列进行约束;这会导致插入错误。

e.g。

ALTER TABLE [dbo].[YOUR_TABLE]
ADD CONSTRAINT [ColLengthConstraint] CHECK (DATALENGTH([your_column]) = 20)