簡體   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