student_name
テーブルの列にstudent
英字しか入力できないことを確認するにはどうすればよいですか?
2569 次
3 に答える
3
「英字のみ」が大文字と小文字の A ~ Z のみを意味する場合は、英字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
チェック制約を探しているかもしれません
構文は、create table コマンド内で次のようになります。
... CHECK REGEXP_LIKE (students_name, '^([:alpha:]|[:space:])*$'), ...
これまでにウェブで見つけた例:
于 2012-04-30T19:53:08.530 に答える
0
Oracle のREGEXP関数を使用してそれを行うことができます。
于 2012-04-30T19:54:05.340 に答える