ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【SQL】算術演算子とCASE演算子

  • SELECT文の選択列リスト
  • INSERT文のVALUES句
  • UPDATE文のSET句
    で値の代わりに使える演算子をまとめてみました。

算術演算子

算術演算子はよく値の計算に使われるが、
日付の計算や文字列の連結にも使える(DBMSによって構文が異なる)。

構文 説明
数値 + 数値 数値同士で足し算
日付 + 数値 日付を数値の日数だけ進める
数値 - 数値 数値同士で引き算
日付 - 数値 日付を数値の日数だけ戻す
日付 - 日付 日付の差の日数を得る
数値 * 数値 数値同士で掛け算
数値 / 数値 数値同士で割り算
文字列 || 文字列 文字列を連結する

CASE演算子

CASE演算子は、
列の値や条件式を計算し、その結果によって値を変換する。
SQLでの条件分岐ができる。

単純CASE式

CASE  列名
 WHEN 値1 THEN 値1のときに返す値
(WHEN 値2 THEN 値2のときに返す値)
 •••
(ELSE デフォルト値)
END

SELECT  gender,
 CASE gender
   WHEN ’M’  THEN '男性'
   WHEN ’F’  THEN '女性'
   ELSE '不明'
END
FROM customers;

☀︎customersテーブルのgender列が、
’M’なら「男性」、’F’なら「女性」、それ以外なら「不明」と表示される。

検索CASE式

CASE  
 WHEN 条件1 THEN 条件1のときに返す値
(WHEN 条件2 THEN 条件2のときに返す値)
 •••
(ELSE デフォルト値)
END

SELECT name,
 CASE 
   WHEN age < 18 THEN '未成年'
   WHEN age >= 18 AND age < 65 THEN '成人'
   ELSE '高齢者'
END AS age_label
FROM customers;

☀︎customersテーブルのageが、
18未満なら「未成年」、18〜64なら「成人」、それ以外なら「高齢者」に変換され、
name列とCASE式で判定したラベル列(age_label)が表示される。


参考にしたサイト