복붙노트

[SQL] SQL - COALESCE와 ISNULL의 차이? [복제]

SQL

SQL - COALESCE와 ISNULL의 차이? [복제]

COALESCE ()와 ISNULL ( '') 사이의 실질적인 차이점은 무엇입니까?

하나는 최고입니다 SQL의 연결 값에 NULL 값을 방지 할 때 사용되는?

감사!

해결법

  1. ==============================

    1.

    > USE tempdb; 
    > GO
    
    > -- This statement fails because the PRIMARY KEY cannot accept NULL values
    > -- and the nullability of the COALESCE expression for col2 
    > -- evaluates to NULL. 
    
    > CREATE TABLE #Demo  (  col1 integer NULL,  col2 AS COALESCE(col1, 0) PRIMARY KEY,  col3 AS ISNULL(col1, 0)  ); 
    > 
    > -- This statement succeeds because the nullability of the 
    > -- ISNULL function evaluates AS NOT NULL.
    > 
    > CREATE TABLE #Demo  (  col1 integer NULL,  col2 AS COALESCE(col1, 0), 
    > col3 AS ISNULL(col1, 0) PRIMARY KEY  );
    

    출처 : BOL

  2. ==============================

    2.가장 큰 차이점은 당신이 다른 RDBMS에에서 찾을 수 있도록 COALESCE는, ANSI-표준이다,이다, 다른 차이점은 ISNULL에 하나만을 전달할 수있는 반면 유착에 검사 할 값의 전체 목록을 제공 할 수있다.

    가장 큰 차이점은 당신이 다른 RDBMS에에서 찾을 수 있도록 COALESCE는, ANSI-표준이다,이다, 다른 차이점은 ISNULL에 하나만을 전달할 수있는 반면 유착에 검사 할 값의 전체 목록을 제공 할 수있다.

  3. ==============================

    3.ISNULL 함수이기 때문에, 한 번만 평가된다. 상술 한 바와 같이, 병합 식에 대한 입력 값은 여러번 평가 될 수있다. COALESCE는 기본적으로 CASE 표현식으로 변환하고 ISNULL은 내장 데이터베이스 엔진에서 구현됩니다.

    ISNULL 함수이기 때문에, 한 번만 평가된다. 상술 한 바와 같이, 병합 식에 대한 입력 값은 여러번 평가 될 수있다. COALESCE는 기본적으로 CASE 표현식으로 변환하고 ISNULL은 내장 데이터베이스 엔진에서 구현됩니다.

    ISNULL 빠른 유착보다.

    MSDN

  4. ==============================

    4.COALESCE ()는 다수의 입력을 가질 수 있으며, 그 중 하나가 널이 아닌 때까지 순서대로 평가 것 같은 유착 등 (COL1, Col2의, 열 3, "N / A"). ) (대신 ISNULL의 MS에 의해 이것을 사용하는 것이 좋습니다

    COALESCE ()는 다수의 입력을 가질 수 있으며, 그 중 하나가 널이 아닌 때까지 순서대로 평가 것 같은 유착 등 (COL1, Col2의, 열 3, "N / A"). ) (대신 ISNULL의 MS에 의해 이것을 사용하는 것이 좋습니다

    ISNULL ()는 단지 그러나 약간 빠른 유착보다 것으로 알려져있어, 하나 개의 입력을 할 수 있습니다.

  5. from https://stackoverflow.com/questions/18828641/sql-difference-between-coalesce-and-isnull by cc-by-sa and MIT license