記錄一次oracle 多值逗號隔開字段顯示中文名稱的解決方案

記錄一次特殊的列表查詢,以便於以後查閱。

業務場景是這樣的,a表有字段id,ids,ID= 11 ids= 1,2 等字符串,b表 有字段 id,  name 字段,內容如 id= 1 name = java工程師,ID =2 name = 需求分析師,id = 3 name = ui設計,id = 3 name = web前端 等內容 ,a表字段ids 值爲b表取值集合,要求 取出a表字段ids 展示中文名稱 Java工程師,需求分析師

數據庫 是oracle11g

思路分析,多於複雜的字段且有規律的字段查詢 此刻想到的是REGEXP_LIKE函數,REGEXP_LIKE (a.ids,b.id),取出 符合條件的a表id,b表name,列表  11,java工程師,11 ,需求分析師,相當於一次拆分,然後怎麼做就比較明瞭了,對a表id做分組,wm_concat函數對name做組合,最終得到結果 11   java工程師,需求分析師

 

完整sql語句如下:select a.*,( select temp.name from 
(select aa.id,wm_concat(b.name)  name
from a aa,
b b 
where  REGEXP_LIKE (aa.ids,b.id) 
group by a.id) temp where temp.id = a.id)  name from a a

 

查詢結果 11 1,2 java工程師,需求分析師

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章