PostgreSQLの正規表現

今日は、久々に時間がとれたので、そのうち調べようともっていて、のびのびになっていた、PostgreSQLで使う正規表現についての確認を行う。

正直言うと正規表現は、あまり詳しくなく、昔 sedawk で簡単なのを使っただけ。
しかも、SQLではまだ1回も使っていない。

ちょうど、SQLで Like を使って'%'とキーワードを組み合わせてくらいでは調べきれないのがあったので、正規表現で処理することにした。

今回扱う対象は、こんな年月日。
'2011/01/02'
これを、年度毎に切り替えて表示するように、SQLで検索させる。きっと、文字列でなく、日付タイプの変数にしておけば、きっと簡単だったんだろうが、DBを作ったのが当時まだ初心者だったそうで、今となってはテーブルを修正するのが困難。

今日、簡単に調べてこんなのを作ってみました。

"select * from target_table where
target_data ~ '2011/0[4-9]/' or
target_data ~ '2011/1[0-2]/' or
target_data ~ '2012/0[1-3]/';"

今回は、条件3つで作成。

データタイプが日付になっていれば、こんな感じでわかりやすいのに。

"select * from target_table where
date_data >= date'2011/04/01' and
date_data <= date'2012/03/31';"


久々に、Portable Virtual Box を使ったのだが、起動しなくなっていた。前回、終了を失敗したのか、思い出せない。新規に登録し、既存の仮想ディスクを使うように設定したら、動かなくなっていた方も動くようになった。
今後は、終了時に、ちょっと気をつけてみる予定。