| From: | PG Doc comments form <noreply(at)postgresql(dot)org> | 
|---|---|
| To: | pgsql-docs(at)lists(dot)postgresql(dot)org | 
| Cc: | t(dot)dnil(at)yahoo(dot)com | 
| Subject: | COALESCE doccumentation | 
| Date: | 2019-04-27 20:26:57 | 
| Message-ID: | 155639681797.1368.1856073093791885251@wrigleys.postgresql.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-docs | 
The following documentation comment has been logged on the website:
Page: https://www.postgresql.org/docs/11/functions-conditional.html
Description:
The documentation says:
"The COALESCE function returns the first of its arguments that is not null.
Null is returned only if all arguments are null. It is often used to
substitute a default value for null values when data is retrieved for
display, for example"
Which is NOT TRUE. In addition, it is obscure and misleading.
The COALESCE(<value expression>, ..., <value expression>) scans the list of
<value expression>s from left to right, determines the highest data type in
the list and returns the first non-NULL in the list, casting it to the
highest data type selected in the previous step, but if all the <value
expressions>s are NULL, the result is NULL. In case when any of the <value
expressions>s in the list cannot be evaluated to the highest data type then
exception is thrown.
Try, for example.
SELECT COALESCE(NULL, '12', 3, 1, 1); -- OK!
SELECT COALESCE(NULL, '12.2', 3.2, '1', 1.1); -- OK!
SELECT COALESCE(NULL, '1d2', 3, 1, 1); -- error
SELECT COALESCE(NULL, '12', 3, '1d', 1); -- cast error
Thanks.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | PG Doc comments form | 2019-04-29 16:12:04 | Why 'infinity' is not in range '[2019-01-02, infinity]'? | 
| Previous Message | Joe Conway | 2019-04-27 20:02:13 | Re: SET ROLE documentation not entirely correct |