应该这样写吧.phone char(7) check(phone like '[0-9]{9}'));
解决方案 »
- oracle number精度问题
- orale专家帮帮忙啦
- 如何在批处理中 执行 存储过程?
- 请教一个oracle动态语句瓶装问题
- oracle官网gateway下载不了
- 用rman 进行时间点的不完全恢复输入的时间格式?
- 怎样从oracle数据库中导出某个用户下的所有存储过程,包,函数?
- 求两个基本的sql写法
- 会Oracle 8系统维护试用就给500元
- 请问:oracle中的表中列的默认值怎么去掉,用命令怎么写?请帮帮忙
- 各位兄台帮忙:我的win2kpro系统的服务中没有OracleOraHome90ManagementServer这项。。怎么办
- 关于sqlerrd[2]的运用,求助!!!
phone char(7) check(phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'));
phone char(7) check(phone like '[0-9]'));谢谢!!
[0-9][0-9][0-9][0-9][0-9][0-9][0-9] :7个数字组成
[0-9]: 数字
这里就是验证存储在表中的字段格式
就是字母和数字都有
-------你的意思是说,7个字符只要有一个数字就可以?那样的话,我输入:insert into teacher2 values('01','Tom','YanTai','1234Ab7');在这种check约束下就不会产生错误了呀
insert into teacher2 values('01','Tom','YanTai','1')
insert into teacher2 values('01','Tom','YanTai','4')//
看可以不?可以再'123',如果不行,那就是只能输入一个数字
SQL> insert into teacher2 values('01','Tom','YanTai','1');
insert into teacher2 values('01','Tom','YanTai','1')
*
ERROR 位于第 1 行:
ORA-02290: 违反检查约束条件 (GRACE.SYS_C003054)
C:\>sqlplus test/testSQL*Plus: Release 10.1.0.2.0 - Production on 星期三 2月 22 17:08:26 2006Copyright (c) 1982, 2004, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining optionsSQL> drop table test;Table dropped.SQL> create table test(c1 char(7) check(c1 like '[0-9]%'));Table created.SQL> insert into test values('11');
insert into test values('11')
*
ERROR at line 1:
ORA-02290: check constraint (TEST.SYS_C005297) violated
SQL> insert into test values('[0-9]3');1 row created.
create table teacher2
(teacherid char(2) not null primary key,
teachername char(30) not null,
address char(30),
phone char(7) check(phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'));插入数据:
insert into teacher2 values('01','Tom','YanTai','6564678');仍然产生错误呢??到底是哪里的问题呀??
SQL> create table test(c1 char(7) check (translate(c1,' 0123456789',' ') is null));Table created.SQL> insert into test values('1234567');1 row created.SQL> insert into test values('123456');
insert into test values('123456')
*
ERROR at line 1:
ORA-02290: 违反检查约束条件 (TEST.SYS_C003058)
SQL> insert into test values('123a456');
insert into test values('123a456')
*
ERROR at line 1:
ORA-02290: 违反检查约束条件 (TEST.SYS_C003058)
SQL> insert into test values('12 456');
insert into test values('12 456')
*
ERROR at line 1:
ORA-02290: 违反检查约束条件 (TEST.SYS_C003058)
SQL> insert into test values('12as456');
insert into test values('12as456')
*
ERROR at line 1:
ORA-02290: 违反检查约束条件 (TEST.SYS_C003058)
当将 CHECK 约束附加到表或列时,必须包括 SQL 表达式。
可以创建简单的约束表达式在简单条件下检查数据;或使用布尔运算符创建复杂的约束表达式以在多种条件下检查数据。例如,假设 authors 表中有一个 zip 列,该列要求 5 位数字的字符串。下面的示例约束表达式确保只允许 5 位数字:
zip LIKE '[0-9][0-9][0-9][0-9][0-9]'看这段话的意思,是可以phone char(7) check(phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]')这么写的呀,可是为什么插入不进去数据呢?
-----------------那为什么我建表的时候它不提示错误呢?
--------
http://cache.baidu.com/c?word=%BF%C9%D2%D4%3B%B4%B4%BD%A8%3B%BC%F2%B5%A5%3B%B5%C4%3B%D4%BC%CA%F8%3B%B1%ED%B4%EF%CA%BD%3B%D4%DA%3B%BC%F2%B5%A5%3B%CC%F5%BC%FE%3B%CF%C2%3B%BC%EC%B2%E9%3B%CA%FD%BE%DD&url=http%3A//www%2Enhbbs%2Enet/csdn/html/040531/20044144947301796%2Ehtml&b=0&a=6&user=baidu
没提是什么数据库。
-----------------那为什么我建表的时候它不提示错误呢?"
那是因为oracle把你所写的做为一个普通的字符串处理了。看我前面的例子。
SQL> create table test(c1 char(7) check(c1 like '[0-9]%'));Table created.SQL> insert into test values('11');
insert into test values('11')
*
ERROR at line 1:
ORA-02290: check constraint (TEST.SYS_C005297) violated
SQL> insert into test values('[0-9]3');1 row created.