Объединить разные с делом - PullRequest
0 голосов
/ 24 октября 2018

я запутался в обучении объединению, я новичок в sql.

пример:

select case when value is null then 1 
    else value end as value 
from table

и

select coalesce(value, 1)  
from table

и в уроке, который я вижу вИнтернет есть как

select coalesce (arg_1, arg_2, arg_3)

, если я сделаю

select coalesce(value, 1, 2)

, как я могу показать, что возвращаемое значение равно 2?

1 Ответ

0 голосов
/ 24 октября 2018

Ваше 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

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...