在 Hive 中使用 regexp_replace 从字符串中删除字母
Removing alphabets from string using regexp_replace in Hive
您能否确认是否有更多 'proper' 方法从 '2018-10-27T19:57:33Z'
等字符串中删除字母?总是有 2 个符号要删除,第一个需要替换为 space,第二个位于字符串和字符串的符号需要替换为空。其实是嵌套的,如果有机会再优化一下就好了。
select regexp_replace(regexp_replace(string, '[[:alpha:]]', ' '),'[[:alpha:]]', '')
https://dbfiddle.uk/?rdbms=postgres_10&fiddle=8d713f75bf6575dc85d67832ef6b0e5c
我们仍然需要使用 two regexp_replace
函数,因为我们 不会用某个替换值替换所有字母表 。
(或)
通过使用 from_unixtime
和 unix_timestamp
函数,我们可以从字符串值中删除 T,Z。
例如:
hive> with cte as(select string("2018-10-27T19:57:33Z")ts)
select ts,
regexp_replace(regexp_replace(ts,'T',' '),'Z','') regex_func,
from_unixtime(unix_timestamp(ts,"yyyy-MM-dd'T'HH:mm:ss'Z'"),"yyyy-MM-dd HH:mm:ss") unix_time_func
from cte;
+-----------------------+----------------------+----------------------+--+
| ts | regex_func | unix_time_func |
+-----------------------+----------------------+----------------------+--+
| 2018-10-27T19:57:33Z | 2018-10-27 19:57:33 | 2018-10-27 19:57:33 |
+-----------------------+----------------------+----------------------+--+
还有其他方法可以使用 replace,substring 函数,我们可以获得相同的结果。
您能否确认是否有更多 'proper' 方法从 '2018-10-27T19:57:33Z'
等字符串中删除字母?总是有 2 个符号要删除,第一个需要替换为 space,第二个位于字符串和字符串的符号需要替换为空。其实是嵌套的,如果有机会再优化一下就好了。
select regexp_replace(regexp_replace(string, '[[:alpha:]]', ' '),'[[:alpha:]]', '')
https://dbfiddle.uk/?rdbms=postgres_10&fiddle=8d713f75bf6575dc85d67832ef6b0e5c
我们仍然需要使用 two regexp_replace
函数,因为我们 不会用某个替换值替换所有字母表 。
(或)
通过使用 from_unixtime
和 unix_timestamp
函数,我们可以从字符串值中删除 T,Z。
例如:
hive> with cte as(select string("2018-10-27T19:57:33Z")ts)
select ts,
regexp_replace(regexp_replace(ts,'T',' '),'Z','') regex_func,
from_unixtime(unix_timestamp(ts,"yyyy-MM-dd'T'HH:mm:ss'Z'"),"yyyy-MM-dd HH:mm:ss") unix_time_func
from cte;
+-----------------------+----------------------+----------------------+--+
| ts | regex_func | unix_time_func |
+-----------------------+----------------------+----------------------+--+
| 2018-10-27T19:57:33Z | 2018-10-27 19:57:33 | 2018-10-27 19:57:33 |
+-----------------------+----------------------+----------------------+--+
还有其他方法可以使用 replace,substring 函数,我们可以获得相同的结果。