كيف أفعل منطقية على عمودين في الخلية, واحد منها هو Varchar?

StackOverflow https://stackoverflow.com/questions/248753

  •  05-07-2019
  •  | 
  •  

سؤال

هذا هو تتمة هذا السؤال.

أود أن الجمع بين ثلاثة أعمدة في واحدة على الخلية حدد.أول عمودين هي منطقية و الثالث هو سلسلة التي هي في بعض الأحيان فارغة.هذا يؤدي إلى نتائج غريبة:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top