|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Здравствуйте, помогите, пожалуйста с запросом. В столбце num содержатся числовые значения (положительные, отрицательные, дробные). Требуется оставить первые 2 цифры, а остальные заменить на 0, если число 5-значное и меньше (53046 -> 53000) первые 3 цифры, если число от 6-значного до 19-значного (839593954.87 -> 839000000.00) и первые 8 цифр, если число 20-значное и больше (-435763857636583756478356 -> -435763850000000000000000) У меня получилось написать такой запрос на Oracle с помощью regexp_relace, которая принимает 6 параметров и где я смог указать с какого символа начать замену. Но мне нужно сделать это на Hive/Impala, где принимаются только 3 первых параметра. Какие функции мне нужно использовать дополнительно? SELECT case when data.num BETWEEN 1 AND 99999 then regexp_replace (data.num, '1|2|3|4|5|6|7|8|9' , '0', '3', '0', 'c') when data.num BETWEEN 100000 AND 9999999999999999999 then regexp_replace (data.num, '1|2|3|4|5|6|7|8|9' , '0', '4', '0', 'c') when data.num > 9999999999999999999 then regexp_replace (data.num, '1|2|3|4|5|6|7|8|9' , '0', '9', '0', 'c') when data.num BETWEEN -99999 AND 0 then regexp_replace (data.num, '1|2|3|4|5|6|7|8|9' , '0', '3', '0', 'c') when data.num BETWEEN -9999999999999999999 AND -100000 then regexp_replace (data.num, '1|2|3|4|5|6|7|8|9' , '0', '4', '0', 'c') when data.num < -9999999999999999999 then regexp_replace (data.num, '1|2|3|4|5|6|7|8|9' , '0', '9', '0', 'c') FROM data WHERE data.num IS NOT NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2020, 15:42 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
Горе от ума. 1. FROM data Нет у нас ваших данных. 2. Проще подходите. Самое примитивное - самое действенное. Как добить нулями, сходу не сообразил, коллеги подскажут. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2020, 16:11 |
|
Помощь с запросом
|
|||
---|---|---|---|
#18+
User904 числовые значения Код: plsql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2020, 16:35 |
|
|
start [/forum/topic.php?fid=52&msg=39951374&tid=1881307]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 252ms |
0 / 0 |