복붙노트

[SQL] null 값과 MySQL의 비교

SQL

null 값과 MySQL의 비교

나는 NULL이 될 수있는 MySQL의 테이블에 CODE라는 열이. 내가 코드와 일부 행이 있다고 = 내 선택 결과 집합에 무시하려는 'C'. 나는 내 결과 집합에 CODE = NULL 또는 CODE! = 'C'중 하나를 가질 수 있습니다.

다음 쿼리는 NULL로 코드 행을 반환하지 않습니다 :

SELECT * from TABLE where CODE!='C'

그러나 예상대로이 쿼리가 작동하고 나는 그것을 할 수있는 올바른 방법을 알고.

SELECT * from TABLE where CODE IS NULL OR CODE!='C'

내 질문은 왜 코드 만이! = 'C'는 어디 CODE = NULL 행을 반환하지 않습니다 가진 않습니다입니까? 확실히 'C'는 NULL이 아니다. 우리는 여기에 문자로 값을 비교하지 않습니다. 누군가는 그런 식으로 작동하지 않는 이유와 같은 몇 가지 빛을 던질 수 있습니까?

해결법

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

    1.값이 없음에 반대 MySQL의에서 NULL이는 '없는, 알 수없는 값'로 간주됩니다. NULL에이 MySQL의 참조를 살펴 보자.

    값이 없음에 반대 MySQL의에서 NULL이는 '없는, 알 수없는 값'로 간주됩니다. NULL에이 MySQL의 참조를 살펴 보자.

    NULL이있는 모든 산술 비교는 true 또는 false를 반환하지 않습니다,하지만 반환하는 대신 NULL. 그래서, NULL! = 'C'를 반환 NULL, 진정한 반환에 반대.

    'NULL'이있는 모든 산술 비교는 false를 돌려줍니다. SQL에서이 문제를 확인하려면 :

    SELECT IF(NULL=123,'true','false') 
    

    우리가 ISNULL을 사용하고 NULL 연산자지지 않습니다 필요가 NULL 값을 확인합니다.

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

    2.여기 내 테스트 및 문서를 기반으로 : http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

    여기 내 테스트 및 문서를 기반으로 : http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

    당신은 널 (null)을 비교하여 부울 결과를 얻을 수 있습니다 <=> 참고 :이 NOT EQ 연산자처럼 보이지만, EQ 운영자의

    예를 들면 :

    select x <=> y; 
    or
    select @x <=> @y;
    

    이것은 또한 널 대 문자열, 문자열 대 문자열 등을 비교

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

    3.SQL에서 NULL 값은 다른 하나 비교할 수 없습니다 특별한 값이다. 일부 구현 FALSE를 찾을 수 있습니다 (불행히도)하지만 널 (NULL)와 직접 비교의 결과는 항상 NULL이다.

    SQL에서 NULL 값은 다른 하나 비교할 수 없습니다 특별한 값이다. 일부 구현 FALSE를 찾을 수 있습니다 (불행히도)하지만 널 (NULL)와 직접 비교의 결과는 항상 NULL이다.

    당신은 IS NULL을 사용하고 NULL을지지 않습니다해야 널 값을 테스트합니다.

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

    4.

    SELECT * 
    FROM `table_name` 
    WHERE IFNULL(`column_name` != 'C', TRUE)
    
  5. ==============================

    5.사용자로부터 선택 * 여기서 APPLICATION_ID = '1223333344'및 이름이 null;

    사용자로부터 선택 * 여기서 APPLICATION_ID = '1223333344'및 이름이 null;

  6. from https://stackoverflow.com/questions/9608639/mysql-comparison-with-null-value by cc-by-sa and MIT license