복붙노트

[SQL] MYSQL 구문은 NULL의 존재하에 동일하지 평가하지

SQL

MYSQL 구문은 NULL의 존재하에 동일하지 평가하지

나는 MySQL의 쿼리에 문제가 있어요. 나는 다음을 수행 할 것이라고 생각 그래서 나는 2의 값을 제외 할 :

table products

id | name     | backorder
-------------------
1  | product1 | NULL
2  | product2 | NULL
3  | product3 | 2

SELECT name from `products` p
WHERE backorder <> '2'

그러나이 제품 1의 원하는 결과를 제공하지 않는 제품이 그것은 빈 결과 테이블을주고있다.

내가 사용하는 경우 반면에

SELECT name from `products` p
WHERE backorder = '2'

그런 다음 생성합니다 제품 3을. 그러나 나는이 동일하지 않은 레코드를 싶어.

뭔가는 <> '2'와 함께 작동하지 않습니다. 그것은 NULL 값이 떨어져 던지는 것을 될 수 있을까요? 사람이 수정을 제안 할 수 있습니다.

사전에 감사합니다!

해결법

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

    1.사용이 null의 경우, 또는 단순히 알 수 있기 때문에 NULL 값을 비교하는 NULL을지지 않습니다.

    사용이 null의 경우, 또는 단순히 알 수 있기 때문에 NULL 값을 비교하는 NULL을지지 않습니다.

    SELECT name 
    from   products p
    WHERE  backorder IS NULL OR backorder <> 2
    
  2. ==============================

    2.당신이 사용할 수있는:

    당신이 사용할 수있는:

    SELECT `name` FROM `products` `p`
    WHERE NOT `backorder` <=> '2'
    

    또는

    SELECT `name` FROM `products` `p`
    WHERE !(`backorder` <=> '2')
    
  3. ==============================

    3.이 열 죄송합니다

    이 열 죄송합니다

    우리는이를 사용할 수 있습니다

    SELECT name 
    from   products p
    WHERE  COALESCE(backorder,1)  <> 2
    
  4. ==============================

    4.이 시도하고 참조하십시오.

    이 시도하고 참조하십시오.

    SELECT name from `products` p
    WHERE backorder != '2'
    
  5. from https://stackoverflow.com/questions/16186674/mysql-syntax-not-evaluating-not-equal-to-in-presence-of-null by cc-by-sa and MIT license