Oracle 欄位是多個值的字串的查詢處理

2022-02-09 03:33:05 字數 955 閱讀 4632

1、建立兩張表一張使用者表(t_user),一張興趣小組表t_group,其中小組成員字段儲存使用者id列表以逗號隔開,

表:t_user

編號(f_id)   名稱(使用者名稱)

1         張三

2         李四

3         王五

表:t_group

編號(f_id)   名稱(興趣小組名字)//group_name    興趣小組成員id/member_list

1         奧數                  1,2

2         動物世界                2

3         藝術                  1,2,3

要求查詢結果:

編號(f_id)   名稱(興趣小組名字)  興趣小組成員id

1         奧數          張三,李四

2         動物世界        李四

3         藝術          張三,李四

sql語句:

select f_id,group_name,

(select wm_sys.wm_concat(to_char(f_name)) from t_user where insert(member_list,f_id)>0 ) as memberlist_name

from t_gourp

這中間用到了兩個函式

wm_sys.wm_concat 將多行單列字段拼成已逗號隔開的字串

insert(string,substring) 返回substring 在字元string 的索引,這個函式很奇怪吧,不用管那麼多直接當indexof 用就行了

上面建表嚴重違反三大正規化,但是實際開發中確實存在這樣的情況,希望朋友們勿噴

Oracle8 OCI獲取多個字段值的程式設計步驟

oracle8 oci獲取多個字段值的程式設計步驟 在使用oracle8的oci獲取多個欄位值時,程式設計的順序是 1.拼接生成sql語句 2.分配語句控制代碼,3.準備sql語句 4.執行sql語句 5.分配ocidefine控制代碼,根據所選字段的型別來定義輸出變數,如果所選字段中有lob欄位,...

oracle中distinct多個字段

select distinct t.f resume id t.f resume status t.f resume status,t.f resume status,t.f recruit channel,t.f small channel id from css.t resume info t ...

Oracle 多表更新多個字段

總體原則 1 更新的時候一定要加where條件,否則必然引起該字段的所有記錄更新 2 跨表更新時,set和where時,儘量減少掃瞄次數,從而提高優化 update更新例項 1 最簡單的形式 單錶更新 sql 經確認customers表中所有customer id小於1000均為 北京 1000以內...