【ORACLE】正規表現
正規表現でのチェックは、正規表現自体を理解していれば 非常に有用且つ開発が楽になる。
ただ、基本的にはサーバーサイドで使用することは あんまり良くない。
その理由として、
バックトラッキング(文字のチェック等が構文によって最初からやり直されること)の影響が計りしれないため、
サーバーサイドのボトルネックを増やすことになるのと、原因がつかみにくくなる。
そこを考えた上で、簡単なものであれば使ってもよさそうだ。
というわけでPL/SQLでの例
0から9の整数であれば、数値とみなすチェック。
SET SERVEROUTPUT ON DECLARE TYPE STR_TYPE IS TABLE OF VARCHAR(2000); STR_ARRY STR_TYPE; BEGIN STR_ARRY :=STR_TYPE(); STR_ARRY.EXTEND; STR_ARRY(STR_ARRY.COUNT) := 'AAAAA'; STR_ARRY.EXTEND; STR_ARRY(STR_ARRY.COUNT) := 'BBBBB'; STR_ARRY.EXTEND; STR_ARRY(STR_ARRY.COUNT) := '1234'; STR_ARRY.EXTEND; STR_ARRY(STR_ARRY.COUNT) := '5679'; FOR I IN 1..STR_ARRY.COUNT LOOP /*数字かチェックする*/ IF REGEXP_LIKE(STR_ARRY(I),'^[0-9]+$') THEN DBMS_OUTPUT.PUT_LINE(TO_CHAR(I) || '番目は数値だよ'); END IF; END LOOP RETURN; END;
日付チェックとかは、日付型を利用したほうが早いので
フォーマットが確実に決まっているのであれば、
それに対して限定的に使うというのが一番良いかもしれない。