Ich fange gerade an, Redshift zu lernen, und ich versuche, eine Funktion zu konvertieren, die auf einem MySQL-Server verwendet wird, um in Redshift zu arbeiten. Ich hatte bis jetzt kein Glück, in der Hoffnung, dass die Stackoverflow-Zauberer die Richtung angeben können.Umwandlung der MySQL-Funktion in Redshift
CREATE FUNCTION SS_Ans_to_Num(answer VARCHAR(1000))
RETURNS INT
BEGIN
declare answer_num int(11);
if answer = 'No' then SET answer_num = 0;
elseif answer IN ('N/A – I did not receive this training', 'N/C - No recibí esta capacitación') then SET answer_num = 0;
elseif answer IN ('Strongly Disagree', 'Totalmente en desacuerdo') then SET answer_num = 1;
elseif answer IN ('Poor','Mala') then SET answer_num = 1;
elseif answer IN ('Disagree','En desacuerdo') then SET answer_num = 2;
elseif answer IN ('Fair','Regular') then SET answer_num = 2;
elseif answer IN ('Neutral','Neutro') then SET answer_num = 3;
elseif answer IN ('Agree','De acuerdo') then SET answer_num = 4;
elseif answer IN ('Very Good','Muy buena') then SET answer_num = 4;
elseif answer IN ('Yes','Sí') then SET answer_num = 5;
elseif answer IN ('Strongly Agree','Totalmente de acuerdo') then SET answer_num = 5;
elseif answer IN ('Excellent','Excelente') then SET answer_num = 5;
else SET answer_num = 0;
end if;
return (answer_num);
END;
Ich dachte, etwas in dieser Richtung funktionieren würde, aber es funktioniert nicht:
CREATE FUNCTION SS_Ans_to_Num(answer VARCHAR(1000))
RETURNS INTEGER
STABLE
AS
$$
CASE
WHEN answer = 'No' THEN SET answer_num = 0;
WHEN answer IN ('N/A – I did not receive this training', 'N/C - No recibí esta capacitación') then SET answer_num = 0;
WHEN answer IN ('Strongly Disagree', 'Totalmente en desacuerdo') then SET answer_num = 1;
WHEN answer IN ('Poor','Mala') then SET answer_num = 1;
WHEN answer IN ('Disagree','En desacuerdo') then SET answer_num = 2;
WHEN answer IN ('Fair','Regular') then SET answer_num = 2;
WHEN answer IN ('Neutral','Neutro') then SET answer_num = 3;
WHEN answer IN ('Agree','De acuerdo') then SET answer_num = 4;
WHEN answer IN ('Very Good','Muy buena') then SET answer_num = 4;
WHEN answer IN ('Yes','Sí') then SET answer_num = 5;
WHEN answer IN ('Strongly Agree','Totalmente de acuerdo') then SET answer_num = 5;
WHEN answer IN ('Excellent','Excelente') then SET answer_num = 5;
ELSE SET answer_num = 0;
END CASE;
RETURN (answer_num);
$$ LANGUAGE SQL