テーブルのカラムに格納できる文字を制限する。

例えば、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じゃなかったら、
ヴァリデート失敗、ということ。