テーブルのカラムに格納できる文字を制限する。
例えば、user表のnameカラムに、
アルファベット大文字(A-Z, a-z, 0-9)以外の入力を認めない、
という制約を付ける場合。
いろいろ調べたが、以下しか方法がなさそう。
CREATE TABLE user ( pk NUMBER(6) NOT NULL UNIQUE, name CHAR(40) DEFAULT 'dummy' NOT NULL, PRIMARY KEY (pk), CONSTRAINT chk_name_string CHECK( LENGTH ( TRIM ( REPLACE ( TRANSLATE( name, 'ABCDEFGHIJKLMNOPQRSTUVWXYXZabcdefghijklmnopqrstuvxwyz0123456789', '000000000000000000000000000000000000000000000000000000000000000' ), '0', '' ) ) ) IS NULL ) );
アルファベット数字を全て0に一旦置換(TRANSLATE)してから、その0を''にREPLACE。
それがNULLじゃなかったら、
ヴァリデート失敗、ということ。