В Oracle база данных У меня есть такая таблица.
| TREE | ORG_NAME |
|---------------------------------|----------|
| \Google earth\Nest global\ATAP | ATAP |
| \Google earth\Nest\Beemoney\ | Beemoney |
| \Google\\\BeeKey\ | |
| | York |
Я пытаюсь сделать SQL-запрос, который бы возвращал такой результат.
| ORGANIZATION |
|-----------------------------------|
| Google earth > Nest global > ATAP |
| Google earth > Nest Beemoney |
| Google > BeeKey |
| York |
Как видите, я хочу:
1) Заменить символ \
в начале и конце предложения.
2) Заменить символ \
внутри предложения на символ >
.
3) Заменить символ \\\
, который находится внутри предложения, на символ >
.
4) Если TREE
colomn пуст, взять запись из ORG_NAME
colomn.
Вот как я начал. Этот SQL-запрос решают 2, 3 и 4 части. Как решить проблему с 1 частью. Я думаю, что мне нужно использовать REGEXP_REPLACE
, верно? Как сделать это правильно? Есть ли другой, более элегантный способ переопределить SQL-запрос? Как видите, я несколько раз хожу по одному и тому же столу.
SELECT
COALESCE (TREE, ORG_NAME) as ORGANIZATION
FROM (
SELECT
REPLACE(TREE, '\', '>') AS TREE,
ORG_NAME
FROM (
SELECT
REPLACE(TREE, '\\\', '>') AS TREE,
ORG_NAME
FROM
ORG
)
)