如何验证表中的student_name
列student
只能输入字母字符?
问问题
2569 次
3 回答
3
如果“only alpha-characters”表示只有大写和小写字母AZ,你可以使用一个CHECK
约束来检查是否有非字母字符
SQL> ed
Wrote file afiedt.buf
1 create table student (
2 student_name varchar2(100),
3 constraint chk_student_name check( student_name = regexp_replace( student_name, '[^[:alpha:]]', null ))
4* )
SQL> /
Table created.
这允许您插入student_name
纯字母的值
SQL> insert into student values( 'JustinCave' );
1 row created.
但是如果你插入一些非字母的东西,比如空格,就会引发错误
SQL> insert into student values( 'Justin Cave' );
insert into student values( 'Justin Cave' )
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CHK_STUDENT_NAME) violated
如果要允许空格和字母字符一起使用,可以修改正则表达式
SQL> ed
Wrote file afiedt.buf
1 create table student (
2 student_name varchar2(100),
3 constraint chk_student_name check( student_name = regexp_replace( student_name, '[^([:alpha:]|[:space:])]', null ))
4* )
SQL> /
Table created.
SQL> insert into student values( 'Justin Cave' );
1 row created.
SQL> insert into student values( 'Justin Cave1' );
insert into student values( 'Justin Cave1' )
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CHK_STUDENT_NAME) violated
于 2012-04-30T20:09:21.897 回答
0
您可以使用 Oracle 的REGEXP函数来执行此操作。
于 2012-04-30T19:54:05.340 回答
0
您可能正在寻找检查约束
create table 命令中的语法可能类似于以下内容:
... CHECK REGEXP_LIKE (students_name, '^([:alpha:]|[:space:])*$'), ...
到目前为止我在网上找到的例子:
于 2012-04-30T19:53:08.530 回答