FirebirdでCheck制約に正規表現を使用する

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]+'),
)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください