新年あけましておめでとうございます.
ほんとは昨日なにか更新しようと思ったけど...だめでしたね...
知ってはいましたが, 早速頓挫の危機を迎えています.
とりあえず中身がなくとも, 記事を書くことが重要, ということで, 今日なんか調べたSQLの関数でも書くことにします.
2つある値のうち, どちらか大きい方を返す, みたいなことをやる場合, SQLだとどうするか?
max関数じゃないの?と思うかもしれませんが, あれは集約関数なので, 全然別物です.
というわけでググって出てきたのが,
greatest関数
というものでした.
まあ実行結果は基本的なプログラミング言語のそれと大体同じです.
呼び名がちょっと違うだけです.
postgresqlのドキュメントだとcase文と同じページにあったので, 本質的にcase文じゃないかと思っています.
実際case文で同じことできるし.
ただcase文むやみに使うと読みにくいのでこういうのあるのはありがたいですね.
ちなみに小さい方を返すのはleast関数だそうです.
これらgreatestとleastはだいたいのRDBにあるらしいですが, 標準SQLには含まれていないとのこと.
いまいち標準SQLにあるものとないものの基準がわからんぜ.
ちなみにpostgresqlのgreatestと他のgreatestでは微妙にして重大な違いがあり,
引数にnullが入っている場合, postgresqlのgreatestだとnull以外の引数の中の最大値を返すが他のRDBのだとnullを返す, らしいです.
SQLの感覚としてはpostgresqlの方が異端だと個人的には思いますが, 実用的なのはpostgresqlのほうかと思います.
ただpostgresqlのgreatestの感覚で他のRDBのgreatest使って, 予期せぬnullに殺される未来がすごく見えるので気をつけましょう.
参考:
9.17. 条件式
GREATEST(), LEAST()関数はPostgreSQLだけNULLの扱いが違う - Qiita
今日はこのへんで終わり.
ちなみに書いた記事の内容は本当に調べたことをまとめただけで, 実際にクエリ書いたりしたわけではないのであしからず.
今日はまだクエリ書いて実行する機会がなかったんや...
何はともあれ, 個人的な今日のノルマ達成したので早速モンハンしてきます(正月ボケ).