Ваше query
с первым и вторым будет воспроизводить один и тот же результат, но вы неправильно понимаете концепцию Coalesce
.
Определение в Документация Postgresql
Функция COALESCE возвращает первый из своих аргументов, который не является нулевым.Null возвращается только в том случае, если все аргументы имеют значение null.
Таким образом, это означает, что он вернет первый аргумент not null
, это не похоже на оператор case
с условием типа true
или false
Давайте попробуем с примером:
select coalesce(null, 1)
Он вернет 1
как запрос, который вы показываете, или
select coalesce(null, null, 1)
Он вернет 1
слишком даже 1
в arg_3
, а как насчет 2 значения not null
?
select coalesce(null, 1, 2)
Возвращается 1
.Зачем?Как и в документации сказано: « возвращает первый из своих аргументов, который не является нулевым », поэтому, когда есть 2 значения not null
, первый аргумент с not null
значением будет возвращен
Youможете проверить это демо и попробовать:
Демо <> Fiddle
Надеюсь, это поможет