SQL文で比較とか文字列検索とか
いつもやってる運用のやつで
何かちょっと面倒になったので、もっと効率上げようと久しぶりにSQLをいじってみることにした。
基のDBはOracleか、SQL Sserverか何か良くわからないけど、フロントはAccessで動かしてるので
そこの中で処理したのです。
という事で関数メモです。
Switch関数(分岐処理)
式: Switch(式1,値1,式2,値2,...,True,"それ以外")
【使用例】(今回はサブクエリを使ってINSERTしたので)
INSERT INTO テーブル1 ( 表示順 ) SELECT Switch( 商品区分ID=1,"1", 商品区分ID=3,"2", 商品区分ID=5,"3", 商品区分ID=6,"4",True,"") FROM テーブル2;
ここでやってることは、
商品マスタの商品区分IDが1だったら、表示用テーブルの表示順は1
商品マスタの商品区分IDが3だったら、表示用テーブルの表示順は2
商品マスタの商品区分IDが5だったら、表示用テーブルの表示順は3
商品マスタの商品区分IDが6だったら、表示用テーブルの表示順は4
参考サイト:
Switch関数:東京/東京都港区(プロフェッサ)
Switch関数の書き方と使用例
AccessじゃなければCASE文というのもあるよ。
IIF関数(分岐処理)、INSTR(文字列検索)
式: IIF(評価対象, 真 ,偽)
式: INSTR(開始位置,検索対象,検索文字列,比較方法)
※開始位置、比較方法は省略できます。
検索文字列が見つかると、何文字目で見つかったかが帰ってきます。無ければ0が帰ってきます。
【使用例】(動作確認してないけど・・・)
INSERT INTO 表示用テーブル ( 作者名ONOFF ) SELECT IIf(INSTR(商品名,'/')>0,'1','') FROM 商品マスタ;
ここでやってることは、商品名の中に/があれば作者名も入っているものとみなし、
表示用テーブルの作者名ONOFFに1を、無ければ0を入れます。
参考サイト:
IIf関数:東京/東京都港区(プロフェッサ)
IIf 関数…:一日一見
INSTR、INSTRB - Oracle SQL 関数リファレンス