oracle AA表欄位A存盤的內容為01,02,03,04這種,01及02、03等分別對應另一個表B中的B欄位,如何寫SQL將AA表的A欄位如何替換為A,B,C,D(A、B、C、D對應B表的C欄位)
uj5u.com熱心網友回復:
各位大神幫看看吧uj5u.com熱心網友回復:
原資料長什么樣,預期結果又是什么樣,用excel 畫一下。uj5u.com熱心網友回復:
用excel寫下原始值跟最終要的結果uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
replace(replace(replace(欄位,'01','A'),'02','B'),'03','C')uj5u.com熱心網友回復:
我這個值不是固定的01 或者02,是另一個表的資料欄位比如ID生成的拼接串,要替換為另一個表ID對應的比如NAME欄位uj5u.com熱心網友回復:
with tab1 as (
select '01,02' id from dual
)
,tab2 as (
select '01' id, 'A' des from dual union all
select '02' id, 'B' des from dual
)
,tab3 as (
select regexp_substr(t1.id, '[^,]+', 1, level) r_id, level lv, t1.id from tab1 t1
connect by t1.id = prior t1.id
and prior sys_guid() is not null
and level <= regexp_count(t1.id, ',') + 1
)
select t1.id, listagg(t2.des, ',') within group(order by t1.lv) from tab3 t1, tab2 t2
where t1.r_id = t2.id
group by t1.id
;
uj5u.com熱心網友回復:
SELECT B.C,AA.欄位 FROM AA LEFT JOIN B ON AA.A=B.Buj5u.com熱心網友回復:
update aa set id=decode('01','A','02','B',......)uj5u.com熱心網友回復:
這應該是你想要的,通過b表的name欄位去更新aa表的id欄位update aa set id = (select bb.name from bb where aa.id = bb.id)
where exists (select 1 from bb where aa.id =bb.id)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/55523.html
標籤:開發
