Заменить функцию для определенных c значений - PullRequest
0 голосов
/ 17 июня 2020

У меня есть такая таблица:

  1. Статья
  2. Дата
  3. Статус
  4. Код

В столбце «Статус» находятся такие значения, как «00», «01», «OB». В столбце «Код» указаны такие значения, как:

  • [05] +000569
  • [1B] 5555
  • 690KB
  • -859

Меня просто интересуют строки, в которых «Status» = '00'. Статус «00» показывает только такие значения, как [05] +000569. Эти значения должны быть обрезаны с помощью следующей функции:

select replace(regexp_substr(Code, '(^|[+])[0-9]+'), '+', '')

Как я могу создать SELECT SQL с этой функцией только для строк, где «Status» = '00'?

Ответы [ 2 ]

1 голос
/ 17 июня 2020

«Обрезка» для status = '00', не для других статусов:

SELECT CASE
          WHEN status = '00'                                              --> trim
          THEN                                                            --> for
             REPLACE (REGEXP_SUBSTR (Code, '(^|[+])[0-9]+'), '+', '')     --> '00'
          ELSE
             code                                                         --> else, do nothing
       END
          AS code
  FROM your_table
1 голос
/ 17 июня 2020

Понятно. Вам нужно выражение case:

select (case when status = '00' then replace(regexp_substr(Code, '(^|[+])[0-9]+'), '+', '')
        end)
...