スポンサーリンク

【access/SQL】accessSQLではできないこと~CASE式を使おうと思ったら使えない(SWITCHが代用)コメントが書けない

アクセス SQL
スポンサーリンク
※当サイトは広告を含みます

「達人に学ぶSQL徹底指南書」(ミック著)を読んで(ほぼわからなかったので読んだというより眺めた)、最初の章に「CASE式のススメ」があり、「SQLで条件分岐をするためにぜひとも習得しておく必要のある重要かつ便利な技術です」とあった。

よし、ではさっそくやってみようとaccessを開いてCASE式を書こうとしたら「おや?」「むむ?」…おかしい。

ネットで調べてみると「accessではCASE式は使えません。」とある。

がびーん。

代わりに SWITCH を使うとのこと。

例えばTB1テーブルより項目「性別」の値が男だったら1、女だったら2、不明だったら0とクエリで新たな項目「数値性別」で表示したいとき

CASE文では

SELECT CASE 性別 WHEN ‘男’ THEN 1
                              WHEN ‘女’ THEN 2
                              ELSE 0 END AS 数値性別
    FROM TB1

と書くらしい。

SWITCHでは

SELECT SWITCH( 性別 = ‘男’ , 1,
                          性別 = ‘女’ , 2, 
                          TRUE, 0 ) AS 数値性別
    FROM TB1

IIFと似ているけど、条件分岐が2つ以上複数設定できる。

SWITCH(条件1, 条件1がTRUEの場合の値, 条件2, 条件2がTRUEの場合の値, 
                  条件3, 条件3がTRUEの場合の値, ・・・・・)

最初に書いた条件から順に評価されます。

条件1がTRUEだったら条件1に対応する値を返し、条件2以降はスルーします。

同様に条件1はFALSE、条件2がTRUEだったら条件2に対応する値を返し、条件3以降はスルーします。

CASE分のELSEに該当するものは「条件」のところに TRUE を書いてすべての場合がなんでもかんでもあてはまるようにします。前の条件のすべてに当てはまらなかった場合はTRUE の部分ですべてを受け入れます。

上の例で言うと、項目「性別」が男だったら条件1「男である」が〇、条件1の場合の値「1」を返します。
項目「性別」が女だったら条件1は×、条件2に行って条件2「女である」が〇、条件2の値「2」を返します。

その他の場合条件1は×、条件2×、条件3はなんの判定もせず「TRUE」なので条件3の値「0」を返します。項目「性別」がNULLの場合も0を返してくれました。

そのほかに、コメントってaccessの場合どうやって書くんだろうと検索したところ「accessではコメントは書けません」とのこと。。。

そのほかに、本を見ながら見様見真似でしこしこSQLを書いたのに、クエリを保存して閉じて、また開いたらaccessさんが気を利かせた?全く違うSQL文に変わっている。

一句

  SQL accessでやるにはちときつい

      やるなら VBAの中でだね

参考としたURL

Microsoft AccessのSQL条件分岐はCASE式不可、Switch関数を使う
Microsoft Accessでは、SQL条件分岐のCASE式は使えません。同じことができるSwitch関数の構文・使い方を紹介します。
スポンサーリンク
スポンサーリンク
SQL
スポンサーリンク
mwkをフォローする
エクセルがともだち

コメント

タイトルとURLをコピーしました