Firebird 2.5ではCheck制約に「SIMILAR TO」で正規表現を使用することができます。
正規表現に使用できるメタ文字
[ ] ( ) | ^ - + * % _ ? {
例
create table tbl1 (
/* hat、cat、bat のような三文字の文字列にマッチする */
col1 varchar(10) check(col1 SIMILAR TO '_at'),
/* "[hc]at" は hat と cat にマッチする */
col2 varchar(10) check(col2 SIMILAR TO '[hc]at'),
/* "[^b]at" は bat 以外の ".at" でマッチする全ての文字列にマッチする */
col3 varchar(10) check(col3 SIMILAR TO '[^b]at'),
)
正規表現に使用できる文字クラス
[:ALPHA:]
[:DIGIT:]
[:ALNUM:]
[:UPPER:]
[:LOWER:]
[:SPACE:]
[:WHITESPACE:]
例
create table tbl2 (
/* アルファベットで構成されている文字にマッチする */
col1 varchar(20) check(col1 SIMILAR TO '[[:ALPHA:]]+'),
/* 数字で構成されている文字にマッチする */
col2 varchar(20) check(col2 SIMILAR TO '[[:DIGIT:]]+'),
/* 4~8以外の数字で構成されている文字にマッチする */
col3 varchar(20) check(col3 SIMILAR TO '[[:DIGIT:]^4-8]+'),
)