繁体   English   中英

在Oracle 8i Query中替换字符串

[英]Replacing Strings in Oracle 8i Query

我在ORACLE 8i里有一张这样的桌子

Value  | Timestamp
KKQ    | 10:00
KVKK   | 11:00
KMPE   | 12:00
PPKKPE | 13:00

当我查询这些值时,我需要将KV替换为VKM替换为MPE替换为RPP替换为NP替换为L

最好的方法是什么? 我看到的问题是我们可以在Value列中有任意组合的字符串...我们可以拥有的值有: KK, Q, KV, V, KM, M, PE, R, PP, N, P, L

select 
  replace(
  replace(
  replace(
  replace(<input>, 
    'KV', 'V'),
    'KM', 'M'),
    'PE', 'R'),
    'PP', 'N')
from
  ....

SQL无法解决这个问题,比如几个REPLACE函数。 其原因是例如PPP可以表示PP-P或P-PP,因此可以被PN或NP取代。 xxxKVxxx也是如此; 这是KV还是尾随K和领先的V?

您必须编写一个循环遍历字符串的数据库函数(PL / SQL)并逐个替换。 你肯定会知道如何解释PPP :-)

(顺便说一句:将分类存储为串联的字母串而不是单独的表中似乎是一个坏主意。您使用的是关系数据库系统而不使用关系部分。因此现在出现问题。)

暂无
暂无

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

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