我想为我的SQL Server数据库创建三个单独的检查约束,以确保密码字段约束一个最小值,一个大写字符和一个特殊字符。

我认为最好的方法是创建单独的检查约束,例如我创建了以下约束以确保密码长度最小为8

(len([password]) <= (8))

任何人都可以提出建立所需验证的方法。

谢谢

===============>>#1 票数:2 已采纳

您可以使用一个约束执行此操作,例如:

check password like '%[0-9]%' and password like '%[A-Z]%' and password like '%[!@#$%a^&*()-_+=.,;:'"`~]%' and len(password) >= 8

只是关于大写比较的注释:这要求使用的排序规则区分大小写。 您可能需要在比较中指定显式COLLATE以确保它区分大小写。

===============>>#2 票数:0

我直接不知道你的问题的答案,但经过一些研究后我发现了这个方法:

1)检查给定的字符串是否包含大写字符

SELECT CASE WHEN BINARY_CHECKSUM([password]) = BINARY_CHECKSUM(LOWER([password])) THEN 0 ELSE 1 END AS DoesContainUpperCase
GO

来源: http//www.sqlservercentral.com/Forums/Topic800271-338-1.aspx

2)检查给定的字符串是否包含至少一个特殊字符

我们可以简单陈述

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

source: 如何检测字符串是否包含特殊字符?

我希望我的回答对你有帮助。 亲切的问候,

拉法尔

===============>>#3 票数:0

我不得不删除特殊字符集合中的'a'并添加上面提到的整理。 谢谢你的帮助!

([password] like '%[0-9]%' AND [password] like '%[A-Z]%' collate Latin1_General_BIN2 AND [password] like '%[!@#$%^&*()-_+=.,;:~]%' AND len([password])>=(8))

  ask by Matt_Johndon translate from so

未解决问题?本站智能推荐:

1回复

复杂检查约束?

我有一个通过中间CustomerAddress表链接到地址表的customers表。 这意味着客户可以拥有多个地址,而地址可以拥有许多客户。 (这是必要的,因为我们将配偶和子女作为单独的客户处理,并且每个人都可以有交付,工作,账单和其他地址)。 我希望客户能够指定首选地址。 我的
1回复

SQL Server 2008:检查约束,确保所有行中只有一个值设置为1,其他值为0

需要在列上构建约束,以确保所有行中只有一个值为1,而其他所有值都为0。 存在触发器的解决方案,但我希望内置一些东西。 这样的事情有可能吗?
1回复

Microsoft SQL Server-使用存储过程时检查约束错误(MSG 547)

我不断收到以下错误: 消息547,级别16,状态0,过程add_new_customer,第6行 INSERT语句与CHECK约束“ CK__customer__addres__09A971A2”冲突。 数据库“ AIT 732-银行”的表“ dbo.customer”的列“ a
3回复

检查多列上的CONSTRAINT

我使用SQL Server 2008 我在同一个表中的多个列上使用CHECK CONSTRAINT来尝试验证数据输入。 我收到一个错误: 列'AAAA'的列CHECK约束引用另一列,表'XXXX'。 CHECK CONSTRAINT不能以这种方式工作。 在不使
2回复

为什么这个Check约束不起作用?

我在SQL Server 2005中创建了一个检查约束,但是此检查约束不起作用。 SQL Server Management Studio通过insert语句告诉我以下消息: Msg 547,Level 16,State 0,Line 1 INSERT语句与CHECK约束“MY_
1回复

密码检查约束SQL Server

我正在尝试创建一个密码约束,其中必须包含: -至少1个大写字母 -至少1个数字 -至少5个字符长 我已经搜索了很多,但无法正常工作 例如,我尝试过 现在,如果密码包含数字,它将接受它,但是当密码根本不包含大写字母或仅包含大写字母时,它也会接受它,这使我感到困
2回复

Sql检查约束?

我正在使用SQL Server作为数据库进行C#app这是一个非常简单的问题,到目前为止我都找不到。 我在我的QUANTITY列上创建了一个检查约束,如下所示: 数量是从C#更新的,我不希望数量变得小于零但是当我的数量是2并且我减去2时所以它应该允许零作为数量但不小于0但是它会抛出以下
2回复

表检查约束允许无效数据

当我使用下面的测试脚本创建检查约束时,违反约束的数据仍将允许进入表,并且该约束仍显示为受信任。 我意识到检查约束不能正确检查NULL(它包括column = null而不是column IS null ),但是我仍然希望SQL Server不允许'ASDF','3'或NULL值,因为根据这
3回复

SQL CHECK CONSTRAINT拒绝字母数字和特殊章程,只允许0到9之间的数字

我有以下约束,应该只允许从0到9插入的数字,而不是任何特殊和字母字符。 但情况并非如此,例如使用此更新语句时: 目标是确保源和写入MyTable的数据只有数字,但MyTestPhoneExt字段为VARCHAR(15)NULL。
1回复

检查MySQL枚举之类的SQL查询

在MySQL中,我使用enum和带有enum_range显示变量。 如何在SQL Server中显示检查变量范围