Что такое эквивалент PostgreSQL для ISNULL()
в MS SQL-Server я могу сделать:
SELECT ISNULL(Field,'Empty') from Table
но в PostgreSQL я получаю синтаксическую ошибку. Как мне подражать ISNULL()
функциональность ?
5 ответов
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
или более идиоматические:
SELECT coalesce(field, 'Empty') AS field_alias
использовать COALESCE()
вместо:
SELECT COALESCE(Field,'Empty') from Table;
Он функционирует так же, как ISNULL
, хотя и обеспечивает большую функциональность. Coalesce вернет первое ненулевое значение в списке. Таким образом:
SELECT COALESCE(null, null, 5);
возвращает 5, а
SELECT COALESCE(null, 2, 5);
возвращает 2
Coalesce примет большое количество аргументов. Документированного максимума нет. Я проверил он 100 аргументов, и это удалось. Этого должно быть достаточно для подавляющего большинства ситуаций.
создайте следующую функцию
CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT "
"is null) WHEN true THEN ELSE END) AS RESULT' LANGUAGE 'sql'
и это сработает.
вы можете создавать разные версии с разными типами параметров.