今天在無意間查詢到乙個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...