Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13643
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 24
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-25 14:29
文章分类

全部博文(1)

文章存档

2013年(1)

我的朋友

分类: 数据库开发技术

2013-04-25 15:38:30

      旁边同事问,输入手机号码“861XXXXXXXXXX“,查询用户信息表,返回空行。但表里明明有这个号码啊。。。
      上线复制表里的那个字段,粘贴下来一看,换行了,原来末尾有chr(10)和chr(13)这类东东。。。。
       这个字段是存储手机号码的,只能有数字组成,但经常进去一些莫名其妙的字母、空格之类的东东,要不就是缺一些数字。
       这可以通过使用更严格的约束来解决,测试一下:

create table test9 (id number,
                    cc varchar2(15)
                  check(regexp_replace(cc,'^(861)([0-9]{10})','') is null));  --只能是数字,且只能13个

insert into test9 values(1,'8613452289719')

insert into test9 values(1,'861345228971') ;  ---12个数字,违反约束
ORA-02290: check constraint (MM.SYS_C00219229) violated

insert into test9 values(1,'861345228971A')  --有字母,违反约束
ORA-02290: check constraint (MM.SYS_C00219229) violated


其他类似的约束也可以用这个函数实现:

只能是大写字母:
check(regexp_replace(cc,'[A-Z]{1,}','') is null)
只能是小写字母:
check(regexp_replace(cc,'[a-z]{1,}','') is null)
只能是字母:
check(regexp_replace(cc,'[a-zA-Z]{1,}','') is null)
 


阅读(1630) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~

校长的马夹2013-04-26 09:28:22

.