Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
密码检查约束SQL server_Sql_Sql Server_Check Constraint - Fatal编程技术网

密码检查约束SQL server

密码检查约束SQL server,sql,sql-server,check-constraint,Sql,Sql Server,Check Constraint,我正在尝试创建密码约束,该约束必须包含: -至少1个大写字母 -至少1个 -至少5个字符长 我找了很多,但就是找不到 例如,我试过这个 (len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%' AND [PASSWORD] like '%[A-Z]%') 现在,如果密码包含一个数字,它会接受它,但是当密码根本不包含大写字母,或者只包含大写字母时,它也会接受它,这让我很困惑,我尝试了很多组合 [password] LIKE '%[^a-zA-Z0

我正在尝试创建密码约束,该约束必须包含:

-至少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]%')
这应该不允许使用密码:“WEFW123”对吗?嗯,是的。但它不接受“WEFWEW”,所以它确实适用于0-9,A-Z有什么问题


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

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

(len([PASSWORD])>(5) AND [PASSWORD] like '%[0-9]%' 
AND [PASSWORD] <> Lower([PASSWORD]) COLLATE Latin1_General_CS_AI)
(len([PASSWORD])>(5)和类似“%[0-9]”的[PASSWORD]
和[PASSWORD]Lower([PASSWORD])比较拉丁语(1_General_CS_AI)
或者我自己的例子是这样的:

Declare @Password varchar(20) = 'Hello'
if @Password <> Lower(@Password) COLLATE Latin1_General_CS_AI
    PRINT 'Upper'
else
    PRINT 'lower'
Declare@Password varchar(20)='Hello'
如果@Password Lower(@Password)比较拉丁语1\u General\u CS\u AI
打印“Upper”
其他的
打印“下”

您是否检查了表/数据库的排序规则是否设置为区分大小写?存储密码通常是一个非常糟糕的计划-通常最好存储(盐渍)密码散列-这意味着您不必设置最大密码长度。因此,密码策略通常在应用程序中得到更好的实施insensative@Damien_The_Unbeliever是的,我打算以后再做,我只是想让这一切顺利first@stefan如果以后要对其进行散列,那么将此逻辑放在数据库端就没有意义了,把它放在你的应用程序中。我正在尝试使用大写和数字的组合,这段代码接受它唯一的小写示例:Password1=correct Password1=correct Password1=correct Password=incorrect Password=incorrect pologies,我在测试中留下的=。它本来是要更新的,现在应该可以工作了没问题,很高兴它有帮助:)