Sql 根据值删除斜杠

Sql 根据值删除斜杠,sql,plsql,oracle11g,Sql,Plsql,Oracle11g,我有一列,它的值是两个值的组合: (SELECT value FROM table where id = 'some_unique_id') || '/' || other_table.somecolumn 这两个值都可以有值,一个值可以有值,或者都不能有值。如果两者当前都没有值,则显示“/”,但如果两者都没有值,则我希望显示空白。如果other_table.somecolumn没有值,那么它将显示为[firstvalue]/,但我希望ti没有/所以它只显示第一个值。最后,如果第一个值没有值,

我有一列,它的值是两个值的组合:

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

这两个值都可以有值,一个值可以有值,或者都不能有值。如果两者当前都没有值,则显示“/”,但如果两者都没有值,则我希望显示空白。如果other_table.somecolumn没有值,那么它将显示为[firstvalue]/,但我希望ti没有/所以它只显示第一个值。最后,如果第一个值没有值,它将显示为/[secondvalue],但我还是希望删除/并只显示第二个值。我不知道如何做到这一点,我已经尝试过玩解码功能,但可以;t让它工作。

您可以添加一些逻辑来决定是否添加斜杠(如果确实有必要,子查询会使斜杠变得复杂),也可以添加任何前导斜杠或尾随斜杠:

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  

您可以添加一些逻辑来决定是否添加斜杠(如果确实有必要,子查询会使斜杠变得复杂),也可以添加任何前导斜杠或尾随斜杠:

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