Ich habe eine Tabelle, wie untenLocate REGEXP_REPLACE UDF Hive Zeichenfolge in einer Spalte zu ersetzen
names age gender
v_mark 25 male
j_david 26 male
S_Rose 28 Female
mark 21 male
Zuerst habe ich den Namen Werte enthält „Unterstrich“ ist oder nicht, dann ich brauche zu ersetzen „Strich findout müssen "mit" Leerzeichen "oder" Komma "Name Werte basierend auf der spezifischen Bedingung. Wenn das Geschlecht männlich ist, muss ich "Unterstrich" durch Leerzeichen ersetzen Wenn Geschlecht weiblich ist, muss ich "Unterstrich" durch Komma ersetzen.
Ich habe Suche in Google, und ich fand, dass ich verwenden Locate (überprüfen Sie die „Unterstrich“ im Wert dort) und REGEXP_REPLACE (Um den Unterstrich mit Komma ersetzen basiert auf Bedingung) Ich habe versucht, When
und Case
aber Fehler bekommen. Unten ist mein Code.
CASE
(
WHEN LOCATE("_",Table1.names)-1 > 0 AND Table1.gender='male' THEN regexp_replace(T1.names, "_"," ")
WHEN LOCATE("_",Table1.names)-1 > 0 AND Table1.gender='Female' THEN regexp_replace(T1.names, "_",",")
ELSE Table1.names
END
) AS names1
ich brauche die Ausgabe wie
names1 age gender
v mark 25 male
j david 26 male
S,Rose 28 Female
mark 21 male
Kann mir jemand helfen.