Обсуждение: COALESCE could use some better examples

Поиск
Список
Период
Сортировка

COALESCE could use some better examples

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/15/functions-conditional.html
Description:

Regarding:
https://www.postgresql.org/docs/current/functions-conditional.html

I ran into a situation where COALESCE was used like this

```
SELECT * FROM table WHERE COALESCE(col_1, col_2, col_3) >= 5
```

and didn't understand how it worked, and the examples don't really help
because they only use COALESCE like

```
SELECT COALESCE(..)
```

I asked and answered a question on stackoverflow with a pretty good example
of this, you could consider adding to your page.

Thank you :))

Stackoverflow question link:

https://stackoverflow.com/questions/74057319/coalesce-in-postgresql-conditional-displaying-seemingly-undocumented-behavior

Re: COALESCE could use some better examples

От
Bruce Momjian
Дата:
On Thu, Oct 13, 2022 at 02:28:23PM +0000, PG Doc comments form wrote:
> The following documentation comment has been logged on the website:
> 
> Page: https://www.postgresql.org/docs/15/functions-conditional.html
> Description:
> 
> Regarding:
> https://www.postgresql.org/docs/current/functions-conditional.html
> 
> I ran into a situation where COALESCE was used like this
> 
> ```
> SELECT * FROM table WHERE COALESCE(col_1, col_2, col_3) >= 5
> ```
> 
> and didn't understand how it worked, and the examples don't really help
> because they only use COALESCE like
> 
> ```
> SELECT COALESCE(..)
> ```
> 
> I asked and answered a question on stackoverflow with a pretty good example
> of this, you could consider adding to your page.
> 
> Thank you :))
> 
> Stackoverflow question link:
>
https://stackoverflow.com/questions/74057319/coalesce-in-postgresql-conditional-displaying-seemingly-undocumented-behavior

I read the Stackoverflow thread and it seems you thought a column name
in the function in a WHERE clause should span all the rows looking for
the first non-NULL row, and only if they are all NULL, go to th next
parameter.  All WHERE functions are row-based so I don't see how to
actually improve our doc text without making it more confusing.  Sorry.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Indecision is a decision.  Inaction is an action.  Mark Batterson