[sql-server] ISNULL ()에 해당하는 PostgreSQL은 무엇입니까

MS SQL-Server에서 다음을 수행 할 수 있습니다.

SELECT ISNULL(Field,'Empty') from Table

그러나 PostgreSQL에서 구문 오류가 발생합니다. 기능을 어떻게 에뮬레이트 ISNULL()합니까?



답변

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는 목록에서 첫 번째 null이 아닌 값을 반환합니다. 그러므로:

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 $1 "
    "is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'

그리고 작동합니다.

다른 매개 변수 유형으로 다른 버전을 작성할 수 있습니다.


답변