Что такое PostgreSQL в эквиваленте для функции isnull()



в MS SQL-Server, я могу сделать:



SELECT ISNULL(Field,'Empty') from Table



но в PostgreSQL я получаю синтаксическую ошибку. Как мне эмулировать ISNULL() функциональность ?

727   5  

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 аргументов, и это удалось. Этого должно быть достаточно для подавляющего большинства ситуаций.

Как мне эмулировать функциональность ISNULL ()?

SELECT (Field IS NULL) FROM ...

попробуй:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name

создайте следующую функцию

CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT  "
    "is null) WHEN true THEN  ELSE  END) AS RESULT' LANGUAGE 'sql'

и это сработает.

вы можете создавать разные версии с разными типами параметров.

Comments

    Ничего не найдено.