假设我将sqlserver数据库中的数据类型声明为Varchar(20)。这意味着它可以允许输入长度等于或小于20个字符。
但是我的要求是我需要Varchar(20)来获取确切的输入长度,即如果它的长度不是20,它就不应该接受输入。
我们可以这样做吗?
提前致谢。
答案 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)