在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
)
)
这可能是使用aregexp_replace
和atrim
从字符串的开头和结尾删除字符的一种方式:
select nvl(regexp_replace( trim('\' from tree), '\\+', ' > '), org_name)
from yourTable
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句