WHERE子句MYSQL中的ISNULL(值,0)

我有这个要求:

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()函数.如果您使用IFNULL替换ISNULL,应该修复您的查询.

我建议你更进一步使用COALESCE()而不是IFNULL(),因为COALESCE()是SQL标准的一部分(并且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)
上一篇:日常遇错之ModuleNotFoundError: No module named request


下一篇:php – 为什么不应该使用is_null()?