MENU
みなさんはDr.Sumの環境変数の数で頭を悩ませたことはありませんか? Dr.Sumはユーザーやグループに対して最大10個まで環境変数をセットすることができます。
「え、11個欲しいのに・・・」と思ったあなたへ、今回の記事では環境変数を11個以上使える小技を紹介します。
※今回紹介する機能はDr.Sum Ver 5.5からの機能となります。
下図のようなテーブルに対し、環境変数をつかってA,B,Cのレコードを抽出します。
通常「A」「B」「C」を検索したい場合、以下のようにSQLを記述します。
SELECT * FROM t1 WHERE c1 IN ('A', 'B', 'C')
または
SELECT * FROM t1 WHERE c1 = 'A' OR c1 = 'B' OR c1 = 'C'
しかし、グループの環境変数の場合、下図のようにカンマ区切りで設定しても、該当なしになります。
SELECT * FROM t1 WHERE c1 IN (GET_GROUP_INFO(ENV1))
これは「A,B,C」という一つの文字列で検索しているためです。
内部的に実行するSQLとなっています。
SELECT * FROM t1 WHERE c1 IN ('A,B,C')
Ver.5.5から登場した特殊演算子「SIMILAR TO」と、関数「GET_GROUP_INFO_LIST」を組み合わせることで可能になりました。
SIMILAR TO:正規表現を使ってパターン検索する
GET_GROUP_INFO_LIST:連結したグループ情報を取得する
次のようにグループの環境変数に「A|B|C」を設定します。
この状態にして下記のSQLを流すと、データが抽出されます。
SELECT c1 FROM t1 WHERE c1 SIMILAR TO GET_GROUP_INFO_LIST(ENV1, '|');
このようにひとつの環境変数の枠の中で複数のデータを抽出することが可能になります。
環境変数をつかって権限管理をする方も多いと思います。
もし環境変数の上限で悩まれていましたら、ぜひこちらを参考にしてください。
また他の記事にも環境変数の使い方の解説がありますので、あわせてご覧ください。
Related article
Pick up
Ranking
Info