Удалите фигурные скобки и знак доллара из данных, используя куст regexp_replace

Мне нужно удалить знак доллара и фигурные скобки из одного из полей в улье.

Пример данных:
210,53 долл. США
210,53 долл. США
(390,53 долл. США)
(210,53 долл. США)

Проблема в том, что в некоторых записях фигурные скобки есть, а в других нет. Ниже приведен синтаксис, который я придумал:
выберите REGEXP_REPLACE(сумма, '\(\$|\)','') как сумму из таблицы, где id=1234;
Вывод:
$210,53
210,53 долл. США
390,53
210,53

Этот синтаксис не удаляет знаки доллара из записей без фигурных скобок. Может ли кто-нибудь помочь мне в этом?


person AS0207    schedule 18.11.2015    source источник
comment
Я заставил это работать: выберите REGEXP_REPLACE(сумма, '\(|\\$|\)|','') как сумму из таблицы, где id=1234;   -  person AS0207    schedule 18.11.2015
comment
Вы также можете использовать REGEXP_REPLACE(amount, '[$()]','')   -  person Wiktor Stribiżew    schedule 18.11.2015


Ответы (2)


Если вы хотите удалить а) знаки доллара и б) круглые скобки из поля, вам нужно написать регулярное выражение, охватывающее эти два случая.

Случай А:

^\$

Случай Б:

^\(
\)$

Объединение их вместе с | (альтернативный) оператор, который вы получаете

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

Это:

  • $ в начале
  • ($ в начале
  • ( в начале
  • ) в конце

Если вы УВЕРЕНЫ, что ваши данные ВСЕГДА выглядят как ваши примеры, вы можете упростить это до:

(^\(?\$|\)$)
  • $ в начале с необязательным начальным открывающим парнем
  • закрывающая скобка в конце

(Или, как указывает @stribizhev):

[$()]
  • символы, равные $, (, )

TMTOWTDI (в зависимости от ваших данных)

person John Vinopal    schedule 18.11.2015

Я заставил это работать: выберите REGEXP_REPLACE(сумма, '(|\$|)|','') как сумму из таблицы, где id=1234;

person AS0207    schedule 15.05.2018