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