Как мне сделать логическую логику для двух столбцов в MySql, один из которых - Varchar? - PullRequest
2 голосов
/ 30 октября 2008

Это продолжение этого вопроса .

Я хотел бы объединить три столбца в один при выборе MySql. Первые два столбца логические, а третий - строка, которая иногда равна нулю. Это приводит к странным результатам:

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

Примечание: payment1_paid - логическое значение, payment2_paid - логическое значение, payment2_type - переменное.

Примечание: Пожалуйста, не обращайте внимания, насколько нелепа структура этой таблицы. За каждым плохим кодом стоит длинное объяснение:)

Редактировать: Нуль мне не интересен из-за значения varchar. Я только хочу знать, действительно ли это "нет".

Заранее спасибо за помощь!

Ответы [ 3 ]

5 голосов
/ 30 октября 2008

Если ноль не интересен, тогда для вас:

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

Удачи!

1 голос
/ 30 октября 2008
Select *, 
      (payment1_paid && ((payment2_paid || coalesce(payment2_type,"null") ="none"))) 
         as paid_in_full 
from payments
1 голос
/ 30 октября 2008

Полагаю, вы хотите, чтобы значение NULL было ложным? Попробуйте (payment_paid IS NULL || payment2_type = "none")

...