Mam tabelę o nazwie {x0}} z kolumnami - Team Name i Result w SQL.

Przykładowe wartości:

Team Name | Result
team one  | team one won by 10 points
Champions | Champions lost by 15 points
Patriots  | Match tied

Jak uzyskać tylko słowa "wygrane", "zagubione" lub "związane" w osobnej kolumnie? Imiona zespołów może wiele słów.

Z góry dziękuję.

1
swashen 28 luty 2019, 14:31

2 odpowiedzi

Najlepsza odpowiedź

Oto jedna metoda:

select (case when s.result like '% won %' then 'won'
             when s.result like '% lost %' then 'lost'
             when s.result like '% tied%' then 'tied'
        end) as result
from t;

Może to mieć pewne problemy, jeśli nazwa zespołu ma słowa "wygrać", "zagubione" lub "związane". To wydaje się mało prawdopodobne, ale możesz chronić przed nim:

select (case when s.result like team_name || ' ' || ' won %' then 'won'
             when s.result like team_name || ' ' || ' lost %' then 'lost'
             when s.result = team_name || ' tied' then 'tied'
        end) as result
from t;
3
Gordon Linoff 28 luty 2019, 12:09

Kod SQL poniżej (używana funkcja instr):

select s.*, case
  when instr(upper(s.result),'WON')>0 then 'W'  
  when instr(upper(s.result),'LOST')>0 then 'L'  
  when instr(upper(s.result),'TIED')>0 then 'T'  
  else '?' end as res
from summary s
1
jimmy8ball 28 luty 2019, 12:58