【问题标题】:ISNULL(value, 0) in WHERE clause MYSQLWHERE 子句 MYSQL 中的 ISNULL(value, 0)
【发布时间】:2019-08-01 17:50:59
【问题描述】:

我有这个要求:

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”时的参数计数不正确

我该如何使用它?

【问题讨论】:

    标签: mysql where isnull


    【解决方案1】:
    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 = IFNULL(scl.shop_article_id, 0) 
    AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
    

    【讨论】:

    • 你可以在这里看到ISNULL()IFNULL()函数之间的区别w3schools.com/sql/sql_isnull.asp
    • 感谢您的链接和快速答复!正如艾克所说,COALESCE 是 SQL 标准的一部分,我会使用他的答案,但你的答案也很好!
    【解决方案2】:

    我相信您正在尝试使用IFNULL() 函数。如果您将 ISNULL 替换为 IFNULL 应该可以解决您的查询。

    我建议您更进一步,使用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)
    

    【讨论】:

    • 工作真的很好,现在还没有关于 COALESCE,所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-28
    • 2011-11-17
    • 2018-11-14
    • 1970-01-01
    • 2013-07-30
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多