繁体   English   中英

更换 oracle

[英]REPLACE In oracle

我需要您对 REPLACE 的帮助(在 Oracle 中。我需要在测试中的一列中替换许多字符,如果我想再次更改 5 和 4,可以将 5 更改为“测试”,你有解决方案吗?

在此处输入图像描述

如果你想匹配整个值,我会推荐一个case表达式,它可以很容易地扩展。

假设您要将45都转码为“TEST”:

case when resource_state_key in (4, 5) then 'TEST' end as val

或者,如果您想要不同的值:

case resource_state_key
    when 4 then 'TEST'
    when 5 then 'TEST2'
end as val

在 Oracle 中,后者也可以用供应商特定的 function decode()表示:

decode(resource_state_key, 4, 'TEST', 5, 'TEST2') as val

我不认为你想做什么作为字符串操作。 相反,您似乎想在参考表中查找一个值。 您应该在数据库中有一个“资源状态”参考表。

如果您在数据库中没有一个,您可以在查询中生成一个:

with resource_state_ref as (
      select 4 as resource_state_key, 'TEST' as val union all
      select 5 as resource_state_key, 'TEST' as val 
     )
select ref.val, t.*
from t left join
     resource_state_ref ref
     on t.resource_state_key = ref.resource_state_key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM