2014.06.10
【MySQL】SQLでif文のような条件分岐を行いたいならcase文を使うベシ!!
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文のような条件分岐ですね。この項目だったら、このカラムにはこの値。といった様な形ですね。それをしたかったのです。 例えばこんな状態のテーブルがあります。 それをこんな感じにしたいのです。 やりたい事を最終的にまとめると、・このテーブルの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 ASCDBにない情報でもSQLで条件分岐を設定して表現できるんですね。 こりゃ便利です!必要であれば是非試してみてください!