-3

如何验证表中的student_namestudent只能输入字母字符?

4

3 回答 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:])*$'), ...

到目前为止我在网上找到的例子:

http://www.w3schools.com/sql/sql_check.asp

http://psoug.org/reference/regexp.html

于 2012-04-30T19:53:08.530 回答