mirror of
https://github.com/jbranchaud/til
synced 2026-01-04 23:58:01 +00:00
Add The nullif Function as a Postgres til
This commit is contained in:
43
postgres/the-nullif-function.md
Normal file
43
postgres/the-nullif-function.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# The nullif Function
|
||||
|
||||
PostgreSQL, in addition to generalized case statements, includes the
|
||||
[`nullif`](https://www.postgresql.org/docs/current/functions-conditional.html)
|
||||
function. The docs describe it as a way "to perform the inversation operation
|
||||
of a `coalesce`".
|
||||
|
||||
Rather than resolving to some fallback value if the primary value is `null`
|
||||
(like `coalesce` does), it will resolve to `null` if the given values are the
|
||||
same.
|
||||
|
||||
```sql
|
||||
> select nullif(0, 0);
|
||||
nullif
|
||||
--------
|
||||
ø
|
||||
(1 row)
|
||||
```
|
||||
|
||||
If the values are not equal, then the first value is the result of the
|
||||
function.
|
||||
|
||||
```sql
|
||||
> select nullif(1, 0);
|
||||
nullif
|
||||
--------
|
||||
1
|
||||
(1 row)
|
||||
```
|
||||
|
||||
One way this can be used is in conjunction with the `coalesce` function. For
|
||||
instance, if I have a table of values that are either 0 or a positive number, I
|
||||
can coerce all the zeros to be `1` like so.
|
||||
|
||||
```sql
|
||||
> select coalesce(nullif(0, 0), 1);
|
||||
coalesce
|
||||
----------
|
||||
1
|
||||
(1 row)
|
||||
```
|
||||
|
||||
h/t [Ian Jones](https://twitter.com/_jonesian)
|
||||
Reference in New Issue
Block a user