SQL Server 2008用SQL语句写出设置出生日期与身份证号之间的约束。

嘿,让我帮你看看你写的SQL。

前两天帮隔壁公司调整数据表的时候,也遇到了身份证和出生日期匹配的问题。
你写的思路就是将身份证号的第7 位到第1 4 位(也就是8 位)与转换后的出生日期进行比较。
理论上是可能的。

但是,让我提醒你。
身份证号码为 1 8 位数字。
您的子字符串(IDnumber,7 ,8 ) 采用第 7 到第 1 4 位数字。
它应该是子字符串(IDnumber,7 ,8 )吗? 我看到你写的是 substring(IDnumber,7 ,8 )=CONVERT(varchar(2 0),birth,1 1 2 )。
两侧的长度必须相同。

此外,对于CONVERT(varchar(2 0),birth,1 1 2 )的转换,我通常使用CONVERT(varchar(8 ),birth,1 1 2 )。
出生日期是8 位数字,年、月、日。
你试试吧。

真实场景是去年在武汉的时候,我正在帮一个做社保系统的哥们调表。
他的字段是datetime类型,ID号是varchar(1 8 )。
最后他用了和你类似的写法,不过我改成了8 位。

所以,你的SQL的基本方向是正确的,就是你要注意ID号的位数。
如果身份证号为1 8 位,出生日期为8 位,则可以添加此约束。
如果位数错误,需要更改。

在数据库(Sql)中要check 约束一个密码的长度表达式怎么写的?

1 、在SQL Server 2 008 R2 中创建表时添加密码长度限制:CREATE TABLE [user](id INT, pwd VARCHAR(2 0) CHECK(LEN(pwd) > 6 )); 2 、表已存在,添加密码长度约束: ALTER TABLE Table ADD CONSTRAINT CK_PwdLength CHECK(LEN(Password) > 6 ); 3 、创建MySQL表时指定密码长度: CREATE TABLE test_create_tab5 (id INT, pwd VARCHAR(2 0) CHECK(gender IN('male', 'female', 'unknown'))); 4 、MySQL使用ENUM来限制密码值:CREATE TABLE test(id INT, pwd ENUM('男', '女', '未知')); 5 . 检查约束长度的示例: CREATE TABLE test (id VARCHAR(1 0) CHECK(LENGTH(id) >= 6 )); 6 . 自定义复杂约束: ALTER TABLE Table ADD CONSTRAINT CN_Column1 CHECK(LEN(Column1 ) > 6 AND cCusAbbName LIKE '%[a-zA-Z]%' AND LENGTHB(cCusAbbName) > 6 ); 7 .底线:自己权衡一下。

SQL SERVER CHECK语句,使用check约束限定成绩只能为0~100分

简单来说:这是 ManagementStudio 的运行阶段。

首先点击桌面图标。
然后单击左上角的“新建查询”。

输入这行代码:ALTER TABLE test1 ADD CONStraint ck_cj CHECK(等级 >= 0 且等级 <= 1 00)。

然后单击“执行”。

看看结果是否成功?