Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

SQLでびっくりしたこと。

概要

タイトルのまんまです。SQLでびっくりしたことです。

環境

びっくりしたこと

ORDER BYでNULLの順序を指定できる。

SELECT code, name FROM data_table ORDER BY code NULLS LAST;

とかでNULL値のソート順を最後尾にできる。FIRSTを指定すれば先頭にも。分かりやすい。

PostgreSQLでDISTINCT ON

SELECT DISTINCT ON (code), code, name FROM data_table;

とかできる。nameの値に何が入るかは不明(一番最初に出てきたレコード?)。

TRIM(name) = ''

OracleDBだと

SELECT * FROM data_table WHERE TRIM(name) IS NULL;

ですが、PostgreSQLでは

SELECT * FROM data_table WHERE TRIM(name) = '';

となります。びっくり。

IN句でN:Nの検索

SELECT * FROM data_table WHERE (code, name) IN (1, 2, 3, 4, 5, '名前');

とかできる。頭の中のメモリが足りなくなるので、できれば使いたくない。

まとめ

知らないことってまだまだ沢山あります。