Concat in If - PullRequest
       15

Concat in If

1 голос
/ 05 мая 2019

Я пытаюсь объединить два оператора if в SQL-запросе, но мне не очень везет.

Два утверждения:

if(c.population > 100000000, Concat("Large ", c.GovernmentForm), c.GovernmentForm)

и

if(YEAR(now())-c.IndepYear > 50, Concat("Modern ", c.GovernmentForm, c.GovernmentForm)

Оба эти оператора IF работают отдельно друг от друга, но мне нужно, чтобы они были объединены в одно (например, выходные данные должны быть «Modern Large» и GovernmentForm, в отдельном столбце выходных данных). Я мог бы сделать это как функцию или процедуру, но они кажутся заблокированными на MySQL, который мы используем.

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 05 мая 2019

Поместите условную логику в функцию concat():

concat( (case when c.population > 100000000 then 'Large ' else '' end),
        (case when YEAR(now()) - c.IndepYear > 50 then 'Modern ' else '' end),
        c.GovernmentForm
      )

Это установит оба, один или ни один из префиксов в зависимости от условий.

4 голосов
/ 05 мая 2019

Можно использовать случай, когда .. end

case  when c.population > 100000000  AND YEAR(now())-c.IndepYear > 50
  then  Concat("Large Modern ", c.GovernmentForm), c.GovernmentForm)
end ,
case  when c.population > 100000000 
  then  Concat("Large ", c.GovernmentForm), c.GovernmentForm), 
End 
case    when YEAR(now())-c.IndepYear > 50
  then Concat("Modern ", c.GovernmentForm, c.GovernmentForm) 
End  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...