2017-03-25 16 views
0

M、F、またはTの文字のみを挿入できるように、列に制約を設定したい。 REGEXP_LIKEで作成しようとしましたが、エラーが発生しました。あなたがこれを行うことができますOracle - 特定の文字のみを許可する制約

ALTER TABLE [TABLE_NAME] ADD CONSTRAINT 
[CONSTR_NAME] CHECK (REGEXP_LIKE (COL, '^[M-M,F-F,T-T])\w+')); 

答えて

2

、カラムは何度でも発生手紙M、F、またはTのいずれかを持っている
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTR_NAME] 
    CHECK (REGEXP_LIKE(COL, '^[MFT]*$')); 

。これらは、文字列の先頭(^)から最後($)までの唯一の文字です。

注:空の文字列は、OracleではNULL(デフォルト)に相当するため、このパターンと一致しません。

あなたの質問は少しあいまいです。値がM、F、またはTのいずれかのみである場合は、IN

ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTR_NAME] 
    CHECK (COL IN ('M', 'F', 'T')); 
+0

ありがとうございます。 – NikosL24

関連する問題