복붙노트

[SQL] SQL가 null = NULL [중복]

SQL

SQL가 null = NULL [중복]

차이 사이는 무엇인가

where x is null

where x = null

왜 후자는 작동하지 않는 이유는 무엇입니까?

해결법

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

    1.SQL에서, 널 값 (등 <예 =! =) 비교 연산자를 사용하여 (다른 널 포함한) 다른 값 간의 비교는 여기서의 목적을 위해 거짓으로 간주 널, 초래할 것 절 (엄격 오히려 "거짓"보다, "사실이 아니다"이다, 말하기,하지만 효과는 동일합니다).

    SQL에서, 널 값 (등 <예 =! =) 비교 연산자를 사용하여 (다른 널 포함한) 다른 값 간의 비교는 여기서의 목적을 위해 거짓으로 간주 널, 초래할 것 절 (엄격 오히려 "거짓"보다, "사실이 아니다"이다, 말하기,하지만 효과는 동일합니다).

    추론 널 수단 "알"은 널 어떤 비교 결과 있도록 "알 수 없음"과 같은 점이다. 그래서 당신은 어디 my_column = null의 코딩에 의해 행에 아무런 타격을 얻을 수 있습니다.

    널 및 널 (null이 아닌지)를 테스트하는 특별한 조건 널 아닌 통해 SQL은 컬럼 널인 경우 테스트하기위한 특정 문법을 제공한다.

    여기에 조건의 다양성과 이상에 따라 그 효과를 보여주는 몇 가지 SQL입니다.

    create table t (x int, y int);
    insert into t values (null, null), (null, 1), (1, 1);
    
    select 'x = null' as test , x, y from t where x = null
    union all
    select 'x != null', x, y from t where x != null
    union all
    select 'not (x = null)', x, y from t where not (x = null)
    union all
    select 'x = y', x, y from t where x = y
    union all
    select 'not (x = y)', x, y from t where not (x = y);
    

    (예상대로)에만 1 행을 반환 :

    TEST    X   Y
    x = y   1   1
    

    SQLFiddle에이 실행을 참조하십시오

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

    2.그것은 NULL이 동일 NULL을하지 않습니다 것을주의하는 것이 중요합니다.

    그것은 NULL이 동일 NULL을하지 않습니다 것을주의하는 것이 중요합니다.

    NULL은 값이 아닙니다, 따라서 다른 값과 비교 될 수 없다.

    여기서 x는 x는 NULL 값인지를 확인 널이다.

    여기서 x = 널이 x는 사실이 없을 것 NULL을, 동일 여부를 확인한다

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

    3.먼저 필드 값이 null이 동일 아무것도하지 않는 특수 값이기 때문에 당신이 그것을 위해 =를 사용하여 동등 비교를 사용할 수 있도록 나중에, 당신은 그것을 예상 한대로 작동하지 않습니다 동안 널인지 확인하는 올바른 방법입니다.

    먼저 필드 값이 null이 동일 아무것도하지 않는 특수 값이기 때문에 당신이 그것을 위해 =를 사용하여 동등 비교를 사용할 수 있도록 나중에, 당신은 그것을 예상 한대로 작동하지 않습니다 동안 널인지 확인하는 올바른 방법입니다.

    그래서 당신은 필드 값이 null인지 여부를 확인해야하는 경우, 사용 :

    where x is null
    

    대신에:

    where x = null
    
  4. ==============================

    4.그 평등이 절대적으로 판단 할 수있는 일이라고 생각합니다. 널 (null)과의 문제는 본질적으로 알 수없는 점이다. 알 - 다른 값과 결합 널 (null)은 null입니다. SQL을 요구하는 것은 "내 값이 null 같다?" 입력이 null의 경우에도, 매번 알 수없는 것입니다. 나는 IS NULL의 구현이 명확하게 생각합니다.

    그 평등이 절대적으로 판단 할 수있는 일이라고 생각합니다. 널 (null)과의 문제는 본질적으로 알 수없는 점이다. 알 - 다른 값과 결합 널 (null)은 null입니다. SQL을 요구하는 것은 "내 값이 null 같다?" 입력이 null의 경우에도, 매번 알 수없는 것입니다. 나는 IS NULL의 구현이 명확하게 생각합니다.

  5. from https://stackoverflow.com/questions/9581745/sql-is-null-and-null by cc-by-sa and MIT license