1

我需要从配置单元中的一个字段中删除美元符号和大括号。

样本数据:
$210.53
$210.53
($390.53)
($210.53)

问题是一些记录有大括号,而另一些则没有。下面是我想出的语法:
select REGEXP_REPLACE(amount, '\(\$|\)','') as amount from table where id=1234;
产出:
$210.53
$210.53
390.53
210.53

此语法不会从没有大括号的记录中删除美元符号。有人可以指导我吗?

4

2 回答 2

0

如果要从字段中删除 a) 美元符号和 b) 括号,则需要编写一个涵盖这两种情况的正则表达式。

案例一:

^\$

案例B:

^\(
\)$

将这些与 | 合并在一起 你得到的(交替)运算符

(^\$|^\(\$|^\(|\)$)

那是:

  • $开头
  • ($开头
  • ( 开始时
  • ) 最后

如果您确定您的数据总是看起来像您的示例,您可以将其简化为:

(^\(?\$|\)$)
  • $ 以可选的前导开括号开头
  • 结束时关闭

(或者正如@stribizhev 指出的那样):

[$()]
  • 等于 $, (, ) 的字符

TMTOWTDI(取决于您的数据)

于 2015-11-18T18:39:55.057 回答
0

我让它工作:从 id=1234 的表中选择 REGEXP_REPLACE(amount, '(|\$|)|','') 作为金额;

于 2018-05-15T20:57:13.637 回答