密码检查约束 SQL 服务器
Password check-constraint SQL server
我正在尝试创建必须包含的密码约束:
-至少 1 个大写
-至少1个号码
-至少5个字符长
我已经搜索了很多,但就是无法正常工作
例如,我试过这个
(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%' AND [PASSWORD] like '%[A-Z]%')
现在,如果密码包含数字,它会接受它,但当密码根本不包含大写字母或仅包含大写字母时,它也会接受它,这让我很困惑,我尝试了很多组合
[password] LIKE '%[^a-zA-Z0-9]%'
这也没有用,我尝试了很多来自 Whosebug 的代码片段,人们将其标记为已回答,这让我想知道,这是我的问题还是我做错了什么?我现在很困惑
(len([PASSWORD])>(5) AND [PASSWORD] like '%[A-Z]%' AND [PASSWORD] like '%[0-9]%')
这个应该不允许密码:"wefwefew123"对吗?好吧,确实如此。但它不接受 "wefwefew",所以它确实适用于 0-9,A-Z 有什么问题?
这可能是一个愚蠢的错误,之后我可能会觉得自己很愚蠢,但我无法自己解决,请记住我不是专业人士 ;)
尝试使用区分大小写的排序规则来帮助您解决问题,并将密码与小写版本进行比较,如下所示,使用您的代码:
(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%'
AND [PASSWORD] <> Lower([PASSWORD]) COLLATE Latin1_General_CS_AI)
或者我自己的例子是这样的:
Declare @Password varchar(20) = 'Hello'
if @Password <> Lower(@Password) COLLATE Latin1_General_CS_AI
PRINT 'Upper'
else
PRINT 'lower'
我正在尝试创建必须包含的密码约束:
-至少 1 个大写
-至少1个号码
-至少5个字符长
我已经搜索了很多,但就是无法正常工作
例如,我试过这个
(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%' AND [PASSWORD] like '%[A-Z]%')
现在,如果密码包含数字,它会接受它,但当密码根本不包含大写字母或仅包含大写字母时,它也会接受它,这让我很困惑,我尝试了很多组合
[password] LIKE '%[^a-zA-Z0-9]%'
这也没有用,我尝试了很多来自 Whosebug 的代码片段,人们将其标记为已回答,这让我想知道,这是我的问题还是我做错了什么?我现在很困惑
(len([PASSWORD])>(5) AND [PASSWORD] like '%[A-Z]%' AND [PASSWORD] like '%[0-9]%')
这个应该不允许密码:"wefwefew123"对吗?好吧,确实如此。但它不接受 "wefwefew",所以它确实适用于 0-9,A-Z 有什么问题?
这可能是一个愚蠢的错误,之后我可能会觉得自己很愚蠢,但我无法自己解决,请记住我不是专业人士 ;)
尝试使用区分大小写的排序规则来帮助您解决问题,并将密码与小写版本进行比较,如下所示,使用您的代码:
(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%'
AND [PASSWORD] <> Lower([PASSWORD]) COLLATE Latin1_General_CS_AI)
或者我自己的例子是这样的:
Declare @Password varchar(20) = 'Hello'
if @Password <> Lower(@Password) COLLATE Latin1_General_CS_AI
PRINT 'Upper'
else
PRINT 'lower'