¿Cuál es el equivalente de PostgreSQL para ISNULL()?
En MS SQL-Server, puedo hacer:
SELECT ISNULL(Field,'Empty') from Table
Pero en PostgreSQL me sale un error de sintaxis. ¿Cómo emulo la ISNULL()
funcionalidad?
Aceptado
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
O más idiomático:
SELECT coalesce(field, 'Empty') AS field_alias
Utilice COALESCE()
en su lugar:
SELECT COALESCE(Field,'Empty') from Table;
Funciona de manera muy similar a ISNULL
, aunque proporciona más funcionalidad. Coalesce devolverá el primer valor no nulo de la lista. De este modo:
SELECT COALESCE(null, null, 5);
devuelve 5, mientras
SELECT COALESCE(null, 2, 5);
regresa 2
Coalesce requerirá una gran cantidad de argumentos. No existe un máximo documentado. Lo probé con 100 argumentos y tuvo éxito. Esto debería ser suficiente para la gran mayoría de situaciones.
¿Cómo emulo la funcionalidad ISNULL()?
SELECT (Field IS NULL) FROM ...
Intentar:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name