sql 2000,要求限制电话号码十一位,只能是数字~数据类型char(12),约束表达式怎么写

 我来答
wangzhiqing999
推荐于2017-09-20 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3348万
展开全部
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');
匿名用户
2019-07-03
展开全部
CONSTRAINT CK_学生电话长度07 CHECK (LEN(学生电话07) = 11),
CONSTRAINT CK_学生电话类型07 CHECK (学生电话07 IN(0,1,2,3,4,5,6,7,8,9))
可以参考下,这里建立了两个约束,一个约束长度,一个约束数字类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
037nyvjgi
2011-06-11 · TA获得超过2983个赞
知道大有可为答主
回答量:4464
采纳率:0%
帮助的人:0
展开全部
一般超过长度就提示不予保存,例如百度知道的回答不允许超过9999个字符,超过就提示不能保持
如果确实需要保存超长的字符,vachar(8000)都不够用,那么需要把字段类型修改为text类型,text不限制长度,不过对字符的操作会麻烦些
追问
说的太复杂了…… [电话] like '[0-9][0-9][09][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'   这么写对吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式