*

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

公開日: : SQL

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で条件分岐を設定して表現できるんですね。

こりゃ便利です!必要であれば是非試してみてください!

お問い合わせはこちら!

関連記事

codeigniterでselect文にunionを使いたい

select文でunionを使いたいが、調べてみてると普通にできなさそうなので、librar

記事を読む

SQLのLEFT JOINを実際に実行して視覚的に理解しよう!

photo credit: tec_estromberg via photopin cc

記事を読む

【Codeigniter】$this->db->where() の第3引数にfalseを指定した時の解説

photo credit: trekkyandy via photopin cc PHPに

記事を読む

お問い合わせはこちら!

Comment

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

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

お問い合わせはこちら!

Laravel 5.1の自動ログインのお試し!

セッションの保持時間を1分にする 単位:分 デフォルト

SourceTreeで差分ファイルを抽出

GitのクライアントでSourceTreeを利用する時、コミットの差分

第104回 PHP勉強会に参加しました!

昨日「第104回 PHP勉強会@東京」に参加し、メイン発表をしました。

Windows10にLaravel開発環境を構築

本記事は筆者のノートパソコンにLaravelプロジェクトの開発環境を構

複数のXAMPPインストール

Windows環境でPHP開発をする際にXAMPPをインストールするこ

→もっと見る

  • AWS構築 - クラウドアドバイザー
PAGE TOP ↑