2017-10-25 10 views
0

대 I 스크립트 다음 한 SQL 서버 :COALESCE : 오라클

SELECT 1 
FROM Table t 
WHERE COALESCE(NULL, t.ID) = NULL; 

t가 비어 있습니다. 쿼리는 Oracle에 대해 1을 반환하며 SQL Server에 대해 아무 것도 반환하지 않습니다.

SQL Server에 대한 COALESCE 작업의 출력은 무엇입니까? 이 코드를 DB와 동일한 방식으로 동작하도록 수정할 수 있습니까?

+0

테이블이 비어 있으면 오라클이 '1'을 반환하는 것은 불가능합니다. –

+1

오라클에 대해서는 사실이 아닙니다. 쿼리는't'가 비 었는지 여부에 관계없이 SQL (Oracle, SQL Server 및 ** 모든 ** 다른 SQL 데이터베이스)을 사용하는 모든 데이터베이스 제품에서 행을 반환하지 않습니다. 왜냐하면 ** NULL **과 동등한 ** 아무 것도 없기 때문입니다. – mathguy

답변

1

여기서 첫 번째 인수로 colaesce의 포인트는 NULL입니다. 그냥 이렇게 :

SELECT 1 
FROM Table t 
where t.ID IS NULL; 
0

문제는 병합 함수가 아닙니다. t 테이블이 비어 있으면 SQL Server에서 행을 찾아 반환하지 않습니다.