您可以对表设置检查约束,并且可以将验证逻辑封装在 UDF 中。这样您就可以随时更改逻辑。
CREATE TABLE CheckTbl (col1 varchar(20), col2 varchar(20));
CREATE FUNCTION CheckPassword(@pass varchar(20))
RETURNS int
AS
BEGIN
DECLARE @retval int
if len(@pass)>6 and PATINDEX('%[0-9]%', @pass) >0 and PATINDEX('%[a-zA-Z]%', @pass) >0
SET @retval = 1
else
SET @retval = 0
RETURN @retval
END;
ALTER TABLE CheckTbl
ADD CONSTRAINT CheckPasswordRules CHECK (dbo.CheckPassword(col1) >= 1 );
测试用例
insert into CheckTbl (col1, col2) values('as33dasd', '') --success
insert into CheckTbl (col1, col2) values('33sdasd', '') --success
insert into CheckTbl (col1, col2) values('sdasd22', '') --success
insert into CheckTbl (col1, col2) values('33dasd', '') --fail requires length >6