Я хочу, чтобы последний случай совпадения был - PullRequest
0 голосов
/ 07 июня 2018
string="[(ETLCoreB15,COB-W#2018-05-25, [ETLCoreB4,ETLCoreB15],[ETLCoreB1,ETLCoreB15]),(ETLCoreB20,COB-A#2018-05-25, [ETLCoreB8,ETLCoreB20],[ETLCoreB1,ETLCoreB20])]"

Я хочу выводить как последний etlcoreb1, используя regex_extract

1 Ответ

0 голосов
/ 08 июня 2018

Используйте split() для разделения строк, regex_replace или translate для удаления некоторых символов.Я прокомментировал, что я делаю на каждом шаге в коде.Ваша строка проанализирована:

select    split(
           translate(
            split(
               split(
                 regexp_replace(str,'^\\[|\\]$',''), --remove outer []
              '\\)\\s*,')[1], --split by )<any spaces>comma and take second string, which is second struct
            '\\]\\s*,')[1], --split by ]<any spaces>comma  got [ETLCoreB1,ETLCoreB20])
             '([])',''), --remove ()[] characters
            ',')[0] --split by comma and take first element

from
(select '[(ETLCoreB15,COB-W#2018-05-25, [ETLCoreB4,ETLCoreB15],[ETLCoreB1,ETLCoreB15]),(ETLCoreB20,COB-A#2018-05-25, [ETLCoreB8,ETLCoreB20],[ETLCoreB1,ETLCoreB20])]' as str) s

Результат:

OK
ETLCoreB1
Time taken: 1.414 seconds, Fetched: 1 row(s)

Надеюсь, вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...