답변:
coalesce
모두 오라클과 SQL 서버 지원과 같이 본질적으로 동일한 기능을 제공한다 nvl
하고 isnull
. (몇 가지 중요한 차이점 coalesce
이 있습니다. 임의 개수의 인수를 사용할 수 있으며 첫 번째 Null이 아닌 인수를 반환합니다.에 대한 반환 형식 은 적어도 SQL Server에서 isnull
에는 true가 아닌 첫 번째 인수의 형식과 일치합니다 coalesce
.)
COALESCE
은 한 가지 중요한 이점이 있습니다 NVL
. 바로 가기 평가를 수행하는 반면 NVL
항상 두 매개 변수를 모두 평가합니다. COALESCE(1,my_expensive_function)
와 비교하십시오 NVL(1,my_expensive_function)
.
COALESE()
함수는 훌륭하며 MSDOC> COALESCE 에서 읽을 수 있습니다 . 동일한 구문이 Oracle에서도 작동합니다. 데이터에 NULL 대신 빈 문자열이있는 경우 다음과 같은 것이 필요할 수 있습니다 COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
..
대신 ISNULL()
, 사용 NVL()
.
T-SQL :
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL :
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
NVL2
에서 다른 값을 반환 하려면 다음 과 같이 사용 하십시오 field_to_check
.
NVL2( field_to_check, value_if_NOT_null, value_if_null )
조건을 사용할 수 있습니다 if x is not null then...
. 기능이 아닙니다. NVL()
여기에 사용의 좋은 예인 함수 도 있습니다 : NVL function ref .
COALESCE
ANSI, Postgres, MySQL 지원 ... 유일한주의 사항은 기본 구문만큼 빠르지 않다는 것입니다.