2017-02-23 4 views
0

Ich lade eine Datei, die eine Menge Spalte hat und es enthält Werte wie 123,56 € , wenn ich in Hive-Tabelle geladen, wird das Euro-Symbol durch eine eckige Box, ersetzt und die zweite Sache ist, dass das Komma a anzeigt Dezimal.Wie kann man eine Währung in eine Zahl umwandeln?

Jetzt möchte ich eine Regex, die diesen Wert in 123,56 konvertieren kann, also im Wesentlichen Komma und Euro-Symbol entfernen.

Antwort

1

Try this: -

regexp_extract(regexp_replace('123,56€',',','.'),'([0-9.]+)', 1) 

Dieses 123,56

+0

danke für die Antwort.aber der Wert ist 123,56 € und nicht 123,56 etwas wie regexp_replace (regexp_replace ('123,56 €', '€', ''), ',', '. "); aber ich will nicht mit diesem ansatz gehen, ich will nur zahlen auszahlen, das ist ersetzen, mit. und dann extrahieren Nummer nur – raunaq

+0

überprüfen Sie aktualisierte Antwort –

+0

können Sie die regexp_extract pls erklären? – raunaq

0
hive> select regexp_replace('123,56€','(\\d+),(\\d+).','$1.$2'); 
OK 
123.56 

geben und Sie wahrscheinlich wollen sie als Nummer

hive> select cast(regexp_replace('123,56€','(\\d+),(\\d+).','$1.$2') as decimal(12,2)); 
OK 
123.56 
+0

Ich denke, es könnte sogar eine sauberere Lösung ohne Regex geben. Ich werde später nachsehen –

0
hive> select translate('123,56€',',€','.'); 
OK 
123.56 

Und wenn Sie unbekannte Währung haben, Symbole

hive> select translate('123,56€',translate('123,56€','1234567890',''),'.'); 
OK 
123.56 
Verwandte Themen