oracle中一張表的某個欄位與另一張表關聯

2021-10-07 20:02:46 字數 640 閱讀 6784

今天在無意間查詢到乙個sql,有兩張表,一張使用者表,使用者表中有個personroles欄位,clob型別,裡面是逗號分隔的角色id(a,b,c,d),需要查詢每個人和其現有的角色。問題在於使用者表和角色表的關聯,直接left join用roles.id in (user.personroles),查詢不出來,最後看到了oracle中有個函式instr

instr()函式的格式  (俗稱:字元查詢函式)

格式一:instr( string1, string2 )    /   instr(源字串, 目標字串)

最終寫出的sql如下:

select a.chinaname,

a.personroles,

wm_concat(b.chinaname)

from sys_user a

join sys_roles b

on instr(',' || to_char(a.personroles) || ',', ',' || b.id || ',') > 0

where a.delstatus = 0

group by a.chinaname, a.personroles;

查詢結果正確。

oracle拆分某個字段

表 uf wzlb 物資類別 表 uf wzzl 物資種類 表 uf wzlb wzzl 物資類別和物資種類關聯表,物資類別與物資種類為一對多關係 如,物資類別編碼為 wzlb 201805100004 該物資類別繫結了多個物資種類,繫結的物資種類編碼為 wzzl 201805100044,wzzl...

Oracle一張表的多個字段更新到另一張表中去

假設表a中有多個字段 province city 需要從b表獲取 兩張表的mobile一樣 總結了幾種寫法。一 update a set a.province select province from b where b.mobile a.mobile update a set a.city sel...

查詢出一張表中某個字段具有相同值的記錄

這是一次面試碰到的題目,一開始以為要用到group by關鍵字,後來仔細想了下,其實不需要的。這張資料表名為student,各欄位名如上圖所示 我寫的sql如下所示 第一種 用關聯查詢 select distinct s1.from student s1,student s2 where s1.id...