1

我正在尝试创建一个必须包含的密码约束:

- 至少 1 个大写

- 至少 1 个号码

- 至少 5 个字符长

我已经搜索了很多,但我无法让它工作

例如,我试过这个

(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%' AND [PASSWORD] like '%[A-Z]%')

现在,如果密码包含数字,它将接受它,但当密码根本不包含大写字母或仅包含大写字母时,它也会接受它,这让我感到困惑,我尝试了很多组合

[password] LIKE '%[^a-zA-Z0-9]%'

这也不起作用,我尝试了许多来自stackoverflow的代码片段,人们已将其标记为已回答,这让我想知道,这是我的问题还是我做错了什么?我现在很困惑

(len([PASSWORD])>(5) AND [PASSWORD] like '%[A-Z]%' AND [PASSWORD] like '%[0-9]%')

不应该允许密码:“wefwefew123”对吗?嗯,确实如此。但它不接受“wefwefew”,所以它确实适用于 0-9,AZ 有什么问题?

这可能是一个愚蠢的错误,之后我可能会感到愚蠢,但我无法自己解决它,请记住我不是专业人士;)

4

1 回答 1

0

尝试使用区分大小写的排序规则来帮助您,并使用您的代码将密码与其小写版本进行比较,如下所示:

(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'
于 2015-05-26T08:26:51.040 回答