【发布时间】:2015-08-07 19:21:14
【问题描述】:
我正在尝试创建一个必须包含的密码约束:
-至少1个大写
-至少 1 个数字
-至少 5 个字符长
我已经搜索了很多,但我无法让它工作
例如,我试过这个
(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%' AND [PASSWORD] like '%[A-Z]%')
现在,如果密码包含数字,它会接受它,但当密码根本不包含大写字母或只有大写字母时,它也会接受它,这让我感到困惑,我尝试了很多组合
[password] LIKE '%[^a-zA-Z0-9]%'
这也不起作用,我尝试了许多来自 stackoverflow 的代码 sn-ps,人们已将其标记为已回答,这让我想知道,这是我的问题还是我做错了什么?我现在很迷茫
(len([PASSWORD])>(5) AND [PASSWORD] like '%[A-Z]%' AND [PASSWORD] like '%[0-9]%')
这个应该不允许密码:“wefwefew123”对吧?嗯,确实如此。虽然它不接受“wefwefew”,但它确实适用于 0-9,A-Z 有什么问题?
这可能是一个愚蠢的错误,之后我可能会感到愚蠢,但我无法自己解决它,请记住我不是专业人士;)
【问题讨论】:
-
您是否检查过您的表/数据库上的排序规则是否设置为区分大小写?
-
存储密码通常是一个非常糟糕的计划——通常最好存储(加盐的)密码哈希——这意味着您不必设置最大密码长度。因此,密码策略通常在应用程序中得到更好的执行。
-
我关注了这个stackoverflow.com/questions/3296428/…,结果是不区分大小写
-
@Damien_The_Unbeliever 是的,我打算稍后再使用它,我只是想先完成这项工作
-
@stefan 如果您稍后要对其进行哈希处理,那么将此逻辑放在数据库端是没有意义的,请将其放在您的应用程序中
标签: sql sql-server check-constraint