我的列值是两个值的组合:
(SELECT value FROM table where id = 'some_unique_id') || '/' || other_table.somecolumn
这两个值都可以有值,一个可以有值,或者它们都不能有值。如果两者目前都没有价值' /'正在显示,但如果两者都没有值,我希望显示空白。如果other_table.somecolumn没有值,那么它显示为[firstvalue] /,但是我希望没有/所以它只显示第一个值。最后,如果第一个值没有值,则显示为/ [secondvalue],但我希望删除/并仅显示第二个值。我不确定如何做到这一点,我试图使用解码功能,但可以让它工作。
答案 0 :(得分:2)
你可以添加一些逻辑来决定是否添加斜杠 - 如果真的有必要,子查询会很复杂 - 或者你可以trim()
任何前导或尾部斜杠:
select trim(both '/' from
(SELECT value FROM table where id = 'some_unique_id') || '/' || other_table.somecolumn)
from ...
虽然假设你的两个值本身不以斜线开头或结尾 - 如果它们那么,那么它们也可以被删除。如果你使用斜杠作为一种无论如何都会令人困惑的分隔符。
快速演示:
with t (str) as (
select '/second' from dual
union all select 'first/' from dual
union all select '/' from dual
union all select 'first/second' from dual
union all select '/first/second/' from dual
)
select trim('/' from str) from t;
TRIM('/'FROMST
--------------
second
first
first/second
first/second