根据值删除斜杠

时间:2016-06-22 17:27:33

标签: sql plsql oracle11g

我的列值是两个值的组合:

(SELECT value FROM table where id = 'some_unique_id') || '/' || other_table.somecolumn

这两个值都可以有值,一个可以有值,或者它们都不能有值。如果两者目前都没有价值' /'正在显示,但如果两者都没有值,我希望显示空白。如果other_table.somecolumn没有值,那么它显示为[firstvalue] /,但是我希望没有/所以它只显示第一个值。最后,如果第一个值没有值,则显示为/ [secondvalue],但我希望删除/并仅显示第二个值。我不确定如何做到这一点,我试图使用解码功能,但可以让它工作。

1 个答案:

答案 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