본문 바로가기
MySql

MySQL WHERE 절 MYSQL의 ISNULL (값, 0)

by 베이스 공부 2020. 10. 26.
반응형

이 요청이 있습니다.

SELECT sc.no, scl.quantite, scl.description, scl.poids, scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte 
FROM shop_commande 
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref 
WHERE sc.id = scl.shop_commande_id 
AND sl_ref.refshop = ISNULL(scl.shop_article_id, 0) 
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)

때때로 sl_shop_article_id 에 NULL 값이 있습니다. 내가 원하는 것은 0으로 바꾸는 것이므로 절은 다음과 같습니다.

sl_ref.refshop = scl.shop_article_id

scl.shop_article_id 가 NULL 인 경우에도 작동 할 수 있습니다. 이를 위해 ISNULL 함수를 사용하려고 시도했지만 요청이 잘못되어 오류가 발생합니다.

1582-네이티브 함수 'ISNULL'호출의 잘못된 매개 변수 개수

어떻게 사용하나요?

 

해결 방법

 

IFNULL () 함수를 사용하려고한다고 생각합니다. ISNULL IFNULL 로 바꾸면 쿼리가 수정됩니다.

한 단계 더 나아가 IFNULL () 대신 COALESCE () 를 사용하는 것이 좋습니다. 및 IFNULL () 은 아닙니다).

SELECT sc.no, scl.quantite, scl.description, scl.poids, 
scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte 
FROM shop_commande 
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref 
WHERE sc.id = scl.shop_commande_id 
AND sl_ref.refshop = COALESCE(scl.shop_article_id, 0) 
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)

 

참조 페이지 https://stackoverflow.com/questions/42932426

 

 

반응형

댓글