2016-03-27 8 views
0

テーブル内に制約を作成する必要があります。私は文字(A ... Z)とかっこ、アンパサンド、パイプとスペース( '('、 ')'、 '&'、 '|'、 '')だけのフィールドが必要です。Oracleがregexp_likeを使用して制約する

私は次のようにしようとしたが、それは動作しません:

ALTER TABLE SCPOMGR.U_CLUSTER ADD 
CONSTRAINT U_CLUSTER_CHK_EQUATION 
CHECK (regexp_like (equation, '[A-z]|[chr(124)]|[chr(38)]|[chr(40)]|[chr(41)]|[chr(32)]')) 
ENABLE 
VALIDATE 

答えて

0

は、次の正規表現を試してみてください:^[A-Za-z()&|).]*$詳細について

https://regex101.com/r/uH1yL9/1

[A-z][A-Za-z]

と同じではありません
+0

ありがとう、それは動作します! 2つの結果の文字(AB、AC、BD、...)と2つのシンボル(&|、&&、...)を避けるためにreg_expを使用することも可能ですか? 私は文字と記号がほしいだけです。A&B | C&(D | E) – Gianluca

+0

'^ [()&| )](?:[A-Za-z] [()&|))] * [A-Za-z]?しかし、空の文字列にもマッチすることに注意してください。あなたの要件は何ですか?あなたは手紙や記号で始めたり終わったりする必要がありますか? –

+0

それは動作するはずです、私はテストします。スコープは、ユーザーが擬似SQL条件(&のANDおよび|のOR)を記述する必要があるフィールドを作成することです。ここで、A、B、C、...は異なる関連表に書かれた条件です – Gianluca

0

未検査あなたはこれを試すことができます

'^[[:alpha:][:space:]\(\&\)\.]+$' 
関連する問題