代码之家  ›  专栏  ›  技术社区  ›  Dan Rosenstark

如何在MySQL的两列上执行布尔逻辑,其中一列是varchar?

  •  2
  • Dan Rosenstark  · 技术社区  · 16 年前

    这是续集 this question .

    我想在mysql select中将三列合并为一列。前两列是布尔值,第三列是字符串,有时为空。这会导致奇怪的结果:

    Select *, (payment1_paid && ((payment2_paid || payment2_type ="none"))) as paid_in_full from payments 
    

    注: payment1_paid 是布尔型的, payment2_paid 是布尔型的, payment2_type 是VARCHAR。

    注: 请忽略这张桌子的结构有多荒谬。每段坏代码背后都有一个很长的解释:)

    编辑: 对于varchar值,空对我来说并不有趣。我只想知道它是否真的是“无”。

    提前感谢您的帮助!

    3 回复  |  直到 16 年前
        1
  •  5
  •   David Santamaria    16 年前

    如果空值对您不感兴趣,那么:

    Select *, 
          (payment1_paid && ((payment2_paid || (payment_type IS NOT NULL && payment_type="none"))) 
             as paid_in_full 
    from payments
    

    祝你好运!

        2
  •  1
  •   Greg    16 年前

    我想你想让空值为假?尝试 (payment_paid IS NULL || payment2_type = "none")

        3
  •  1
  •   Bob Probst    16 年前
    Select *, 
          (payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none"))) 
             as paid_in_full 
    from payments