2017-03-14 6 views
0

Ich bin auf der Suche nach einer Möglichkeit, den Wert zurückzugeben, der "case" -ed war.MySQL return case Wert

z.B. was kehrt mir das md5 Ergebnis ohne es bei der damaligen Aussage recomputing

SELECT 
CASE md5(col1,col2,col3,...,coln) 
WHEN MD5('') then NULL 
else ??? 
end 
+0

Wiederholung des Aussage –

+0

@juergend dank, aber das ist, was ich zu vermeiden, bin versucht. – aclokay

+0

Geht es um Code-Duplizierung oder Leistung? –

Antwort

0

Wenn Sie eine Berechnung mehrfach in der Auswahlliste nicht wiederholen wollen, dann müssen Sie es in einer Unterabfrage und Bezug drücken das Feld Alias ​​in der Unterabfrage gesetzt:

SELECT 
    CASE t1.calc 
     WHEN MD5('') then NULL 
     else t1.calc 
    end as md_5 
FROM 
    (select md5(col1,col2,col3,...,coln) as calc from table) t1