使用配置单元 regexp_replace 从数据中删除大括号和美元符号
Remove braces and dollar sign from the data using hive regexp_replace
我需要从配置单元中的一个字段中删除美元符号和大括号。
示例数据:
$210.53
$210.53
($390.53)
($210.53)
问题是有些记录有大括号,有些则没有。下面是我想出的语法:
select REGEXP_REPLACE(金额, '\(\$|\)','') as amount from table where id=1234;
输出:
$210.53
$210.53
390.53
210.53
此语法不会从没有大括号的记录中删除美元符号。有人可以指导我吗?
如果您想从字段中删除 a) 美元符号和 b) 括号,您需要编写涵盖这两种情况的正则表达式。
案例一:
^$
案例 B:
^\(
\)$
将这些与 | 合并在一起(交替)运算符你得到
(^$|^\($|^\(|\)$)
那是:
- $ 开头
- ($ 开头
- (开头
- ) 最后
如果您确定您的数据总是看起来像您的示例,您可以将其简化为:
(^\(?$|\)$)
- $ 以可选的前导开括号开头
- 结束时关闭括号
(或者正如@stribizhev 指出的那样):
[$()]
- 个字符等于 $, (, )
TMTOWTDI(取决于您的数据)
我成功了:select REGEXP_REPLACE(amount, '(|\$|)|','') as amount from table where id=1234;
我需要从配置单元中的一个字段中删除美元符号和大括号。
示例数据:
$210.53
$210.53
($390.53)
($210.53)
问题是有些记录有大括号,有些则没有。下面是我想出的语法:
select REGEXP_REPLACE(金额, '\(\$|\)','') as amount from table where id=1234;
输出:
$210.53
$210.53
390.53
210.53
此语法不会从没有大括号的记录中删除美元符号。有人可以指导我吗?
如果您想从字段中删除 a) 美元符号和 b) 括号,您需要编写涵盖这两种情况的正则表达式。
案例一:
^$
案例 B:
^\(
\)$
将这些与 | 合并在一起(交替)运算符你得到
(^$|^\($|^\(|\)$)
那是:
- $ 开头
- ($ 开头
- (开头
- ) 最后
如果您确定您的数据总是看起来像您的示例,您可以将其简化为:
(^\(?$|\)$)
- $ 以可选的前导开括号开头
- 结束时关闭括号
(或者正如@stribizhev 指出的那样):
[$()]
- 个字符等于 $, (, )
TMTOWTDI(取决于您的数据)
我成功了:select REGEXP_REPLACE(amount, '(|\$|)|','') as amount from table where id=1234;