sql server常见的约束条件
1.检查只能是男或者女
sex in(‘男,女')), sex =‘男' or sex =‘女')
2.在一个范围中间
sage>0 and sage<120 sage between 12 and 30
3.长度大于某个值
len(pwd)>6) //pwd为密码字段
4.数大于某个值
sage>1
5.只能是8位字符,前两位是 0 ,3~4位为数字,第 5 位为下划线,6~8位为字母
alter table 表名 字段 like ‘00[0-9][0-9]/_[a-z,a-z][a-z,a-z][a-z,a-z]%' escape ‘/')and(len(字段)=8) 或者是 alter table 表名 字段 like '00[0-9][0-9][_][a-z,a-z][a-z,a-z][a-z,a-z]%'and(len(字段)=8)
6.电子邮箱要含有@符号
字段like ‘%@%'
7.sql中用check约束一列的首字母为’s’
c字段 like ‘s%'
8.检查约束前3位和后8位均为数字字符:
字段like ‘[0-9][0-9][0-9]%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
9.如何建立检查身份证的约束,身份证是18位,最后一位还有可能是x
select 身份证号 from 表名 where len(身份证号) = 18 and (right(身份证号,17) like '[0-9]'or right(身份证号,17) like ‘x')
10.如何设置区号由0-9之间的数字组成
字段 like ‘[0-9][0-9][0-9]' or 字段 like '[0-9][0-9][0-9][0-9]'or 字段like ‘[0-9][0-9][0-9][0-9][0-9]'; 解释: 其中字段 like '[0-9]…[0-9]'的号码由表示n位从0到9中的数组成。 字段 like ‘[0-9][0-9][0-9]' 表示3位的区号,如北京010;字段 like '[0-9][0-9][0-9][0-9]'表示4位的区号,如三门峡0398; 字段 like '[0-9][0-9][0-9][0-9][0-9]'表示5位的区号,如香港00852
11.最后回复时间 tlastclickt 发贴时间 ttime
最后回复时间 必须晚于 发贴时间 并且小于等于当前时间 使用getdate()函数获取当前时间
设计表
在tlastclickt上右击 选择约束,新建,填入 ([tlastclickt] > [ttime] and [tlastclickt] < getdate())
或者
tiastreply(回帖时间)大于ttime(发帖时间)在创表的同时
创建表的时候应该还没有回帖吧,为什么要用默认值?
可以添加一个约束
alter table topic alter column add check(tlastreply is null or tlastreply > ttime)
12.定义前八位为数字或者 -
一共是15位,为char型
字段 like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%') or len(字段)=15)
13.如何限制varchar字段不允许出现单引号的检查约束 !!!
设表为talbename,不能有引号的字段为fieldname 则:
alter table tablename add constraint ck_fieldname check (not fieldname like ‘%''%')
14.在表中的某列中通过检查约束,让其有某些固定的值
check(sid like ‘bd[0-9][0-9][0-9][0-9][0-9][0-9]') add constraint ck_num check(num like ‘[1][2] [4][_] [0-9][0-9] [0-9][a-z]')
15.如何限制varchar字段不允许出现字符串的检查约束 !!!
设表名为tablename,varchar类型的字段为var_field.则有:
alter table [dbo].[tablename] add constraint [ck_tablename] check (isnumeric([var_field]) = 1)
这样,在var_field只要出现字段一旦出现非数字内容就会报告错误。
16.电话号码的格式必须为xxxx-xxxxxxxx或手机号11位
alter 表名 add constraint ck_字段名 check (字段 like ‘[0-9][0-9][0-9][0-9]_[0-9]…' or len(字段)=11)
17.身份证号是18位且唯一的
alter 表名 add constraint ck_字段名 check (len(字段名)=18 ), constraint uk_字段名 unique(字段名)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论