2

これはこの質問の続編です。

MySql select で 3 つの列を 1 つに結合したいと考えています。最初の 2 つの列はブール値で、3 番目の列は文字列で、null の場合もあります。これにより、奇妙な結果が生じます。

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

注: payment1_paid is boolean, payment2_paidis boolean, payment2_typeis varchar.

注:このテーブルの構造がいかにばかげているかは無視してください。悪いコードの背後には長い説明があります :)

編集: varchar 値については、Null は私にとって興味深いものではありません。本当に「なし」なのか知りたいだけです。

よろしくお願いします。

4

3 に答える 3

5

nullが面白くない場合は、次のようにします。

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

幸運を!

于 2008-10-29T23:25:54.010 に答える
1

NULL を false にしたいと思いますか? 試す (payment_paid IS NULL || payment2_type = "none")

于 2008-10-29T23:12:49.247 に答える
1
Select *, 
      (payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none"))) 
         as paid_in_full 
from payments
于 2008-10-29T23:13:06.737 に答える