2015-02-05 3 views
1

Я использую Hive 0.13, и у меня есть столбец STRING моих табличных значений, например 1.250,99
Я хочу, чтобы эти значения были децимальными, поэтому я должен заменить «. " по "" и "," по "." Результат будет 1250,99 Это мое HQL предложение:NULL при наборе значений строк в десятичное число в улье

cast(regexp_replace(regexp_replace(price, '\\.',''), ',','.') as decimal(18,6)) 

Но она возвращает NULL, я предполагаю, потому что преобразование не удастся. В чем проблема?
Если я не делаю преобразования, он возвращает ожидаемую строку.

UPDATE

Моя проблема заключалась в том, что там были белые места в колонне, поэтому он не может преобразовать его в десятичное значение. Перед выполнением преобразования я использовал функцию триммера.

ответ

0

Попробуйте это:

select cast(regexp_replace(regexp_replace('1.234,56','\\.',''),'\,','\.') as decimal(10,2)); 
Смежные вопросы