cheeck語句例子
1.檢查只能是男或者女
? add const ck_sex check(sex in('男,女')),
? add const ck_sex check(sex ='男' or sex ='女')
2.在一個范圍中間
constraint ch_age check(sage>0 and sage<120),
add const ck_age check(age between 12 and 30)
3.長度大于某個值
add const ck_lenght check(len(lenght)>6)
4.數大于某個值
?add const ck_number ckeck(number>1)
5.只能是8位字符,前兩位是 0 ,3~4位為數字,第 5 位為下劃線,6~8位為字母
alter table 表名
add constraint chkk ?check((字段 like '00[0-9][0-9]/_[a-z,A-Z][a-z,A-Z][a-z,A-Z]%' escape '/')and(len(字段)=8) )
或者是
alter table 表名
add constraint chkk ?check((字段 like '00[0-9][0-9][_][a-z,A-Z][a-z,A-Z][a-z,A-Z]%')and(len(字段)=8) )
6.電子郵箱要含有@符號
check(字段like '%@%')
7.SQL中用check約束一列的首字母為's'
check(col1 like 's%')
8.檢查約束前3位和后8位均為數字字符:
check(col2 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之間的數字組成
CONSTRAINT ?quhao CHECK (quhao ?LIKE '[0-9][0-9][0-9]'?
or quhao LIKE '[0-9][0-9][0-9][0-9]'or quhao LIKE '[0-9][0-9][0-9][0-9][0-9]'));
解釋: 其中quhao LIKE '[0-9]...[0-9]'的號碼由表示n位從0到9中的數組成。
quhao ?LIKE '[0-9][0-9][0-9]' 表示3位的區號,如北京010;quhao LIKE '[0-9][0-9][0-9][0-9]'表示4位的區號,如三門峽0398; quhao 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型
alter table 表名
add constraint chk check(字段 like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'),
? ? constraint chklen check(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 const 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(字段名)