menu
  1. HOME
  2. News & Blog
  3. SQL
  4. 【MySQL】SQLでif文のような条件分岐を行いたいならcase文を使うベシ!!

News & Blogニュース&ブログ

2014.06.10

【MySQL】SQLでif文のような条件分岐を行いたいならcase文を使うベシ!!

medium_24124753 photo credit: jimw via photopin cc この頃は買い物していてもSQL文で考える様になってきました。SELECT 卵 FROM スーパー・・・・・。嘘ですごめんなさいOsamuです。 最近Web開発をしていてよくSQL文をたくさん書いています。SELECT、FROM、WHERE、LEFT JOINなんかといった基本的な文法はだんだん使いこなせるようになってきました。 LEFT JOINなんかは私自身理解する事に苦労しました。今ですか?2日に1回は使ってますよJOIN。 <参考記事>SQLのLEFT JOINを実際に実行して視覚的に理解しよう!
今回もちょっとばかし分からない問題があって、そこを勉強したのでご参考になればと思います。

やりたかった事はSQLでの条件分岐

やりたかったのはSQL文の中でのif文のような条件分岐ですね。この項目だったら、このカラムにはこの値。といった様な形ですね。それをしたかったのです。 例えばこんな状態のテーブルがあります。 table それをこんな感じにしたいのです。 table3 やりたい事を最終的にまとめると、
・このテーブルのcityカラムの最後の文字列が「区」であれば、nameカラムに「23区」、noカラムに「1」が表示されます。 ・そしてcityカラムの最後の文字列が「区」以外であれば、nameカラムに「23区外」、noカラムに「2」が表示されます。

SQLでif文のような条件分岐を行いたいならcase文

このやりたかった事を解決してくれたのがcase文でした。 上記の場合であれば以下のようなcase文を含めたSQLを発行すれば問題解決です!
SELECT
    id,
    prefecture,
    CASE WHEN city LIKE '%区' THEN '東京都(23区)' WHEN city NOT LIKE '%区' THEN '東京都(23区外)' END name,
    CASE WHEN city LIKE '%区' THEN '1' WHEN city NOT LIKE '%区' THEN '2' END no,
    city,
    company_name
FROM
    company
ORDER BY
    name ASC

DBにない情報でもSQLで条件分岐を設定して表現できるんですね。 こりゃ便利です!必要であれば是非試してみてください!

お気軽にご相談ください

株式会社アルベではIT、Webを使って皆様の課題解決のお手伝いをしています。
下記のようなお悩みを持つ方は、是非お気軽にご相談ください。

お問い合わせ