‘壹’ sql server 定义电话号码在0-9之间
使用sql语句。
使用sql语句能实现电话号码限制在数字0-9。
在SQL Server 中,对于基本表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其它定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用“,”分隔,定义表约束时必须指出要约束的列的名称。
‘贰’ sql的几个检查约束
电话号码的格式必须为xxxx-xxxxxxxx或手机号11位
alter 表名 add constraint ck_字段名 check (字段 like '[0-9][0-9][0-9][0-9]_[0-9]......' or len(字段)=11)
银行卡前 8位 1010 357 xxxx xxxx 每格4个空一个格
alter 表名 add constraint ck_字段名 check (字段 like '1010 357 [0-9][0-9]...' )
身份证号是18位且唯一的
alter 表名 add
constraint ck_字段名 check (len(字段名)=18 ),
constraint uk_字段名 unique(字段名)
开始开户密码默认为6个8
alter 表名 add constraint df_字段名 default(‘888888’)for 字段名
卡号,外键,可重复索引
开户日期默认为当前日期`
alter 表名 add constraint df_字段名 default(getdate())for 字段名
货币默认为人民币
alter 表名 add constraint df_字段名 default(‘RMB’)for 字段名
余额不能少1元,否则销户
alter 表名 add
constraint ck_字段名 check (字段名>1)
//给你写这么多,可一分都没有???
‘叁’ sql 2000,要求限制电话号码十一位,只能是数字~数据类型char(12),约束表达式怎么写
SQL Server 2000 没有, 就拿个 SQL Server 2005 的来凑个数。
不大清楚 SQL Server 2000 里面,有没有 PATINDEX 函数了。
CREATE TABLE #temp(
test char(12)
CONSTRAINT chk_test
CHECK (
LEN(RTRIM(test)) = 11 AND
PATINDEX('%[^0-9]%', RTRIM(test)) = 0)
);
-- 失败 长度不符合,且是英文
INSERT INTO #temp VALUES ('a');
-- 失败 长度不符合
INSERT INTO #temp VALUES ('1');
-- 失败 长度不符合
INSERT INTO #temp VALUES ('123456789012');
-- 失败 长度符合 但是英文
INSERT INTO #temp VALUES ('1234567890a');
-- 成功
INSERT INTO #temp VALUES ('12345678901');
‘肆’ 利用sql 写一个正则表达式 判断 是否为手机号码 11 位 + 数字... 变量@TelNo
在数据表中加需要约束的那一列的一个约束就行了!表达式如下:
CHECK=([列名] like '13[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
希望我的回答对你有所帮助,谢谢采纳!!
‘伍’ 我现在有一堆电话号码,但是前面都多了几位,我只要保留后11位,在用sql语句怎么做
截取字符啊 subStr(),各种数据库的sql都有这个函数,但函数名字会有差异,自己查一下