MySQL의 두 열에서 부울 논리를 어떻게합니까? 그 중 하나는 Varchar입니까?
문제
이것은 속편입니다 이 질문.
MySQL Select에서 세 열을 하나로 결합하고 싶습니다. 처음 두 열은 부울이고 세 번째 열은 문자열이며 때로는 널입니다. 이것은 이상한 결과를 초래합니다.
Select *, (payment1_paid && ((payment2_paid || payment2_type ="none"))) as paid_in_full from payments
메모: payment1_paid
부울입니다. payment2_paid
부울입니다. payment2_type
Varchar입니다.
메모: 이 테이블의 구조가 얼마나 우스운 지 무시하십시오. 모든 나쁜 코드 뒤에는 긴 설명이 있습니다 :)
편집하다: Null은 Varchar 값에 대해 흥미롭지 않습니다. 나는 그것이 실제로 "없음"인지 알고 싶습니다.
도와 주셔서 미리 감사드립니다!
해결책
Null이 흥미롭지 않다면 다음 :
Select *,
(payment1_paid && ((payment2_paid || (payment_type IS NOT NULL && payment_type="none")))
as paid_in_full
from payments
행운을 빕니다!
다른 팁
Null이 거짓이되기를 원하십니까? 노력하다 (payment_paid IS NULL || payment2_type = "none")
Select *,
(payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none")))
as paid_in_full
from payments
제휴하지 않습니다 StackOverflow