一張表中某個(gè)字段保存多個(gè)外鍵值,逗號(hào)分隔赊豌,獲取其對(duì)應(yīng)的外鍵表數(shù)據(jù)

最近在項(xiàng)目中扛或,遇到一個(gè)用戶有多個(gè)角色的問(wèn)題。數(shù)據(jù)庫(kù)中保存的是角色編碼是多個(gè)外鍵并用逗號(hào)分隔的值碘饼。需求需要查詢出相應(yīng)的中文值熙兔,并且合成一個(gè)字段悲伶。說(shuō)明 若表字段有1,2,3 則需要根據(jù)1,2,3找出對(duì)應(yīng) 的值a,b,c 組成一個(gè)字段。
下面開(kāi)始實(shí)現(xiàn)記錄:
1.創(chuàng)建學(xué)生表

--1.創(chuàng)建stu表
create table stu(
       sid varchar(100) primary key not null,
       sname varchar(100),
       bid varchar(100)
)

comment on column stu.sid is 'id值';
comment on column stu.sname is '名稱';
comment on column stu.bid is '書(shū)籍住涉,外鍵值';

--2.創(chuàng)建書(shū)籍表單
create table book(
       bid varchar(100) primary key not null,
       bname varchar(100),
       bprice varchar(100)
)

comment on column book.bid is 'id值';
comment on column book.bname is '書(shū)籍名稱';
comment on column book.bprice is '書(shū)籍價(jià)格';
--插入數(shù)據(jù)
insert into stu values('1','小明','1,2');
insert into stu values('2','小紅','1,3');
insert into stu values('3','小強(qiáng)','1,2,3,304');
insert into stu values('4','小威','2,3_4,3-3');
--插入數(shù)據(jù)麸锉,注意此處id 為304的數(shù)據(jù)
insert into book values('1','數(shù)學(xué)','12');
insert into book values('2','語(yǔ)文','16');
insert into book values('3','英文','13');
insert into book values('3_4','高中英語(yǔ)','10');
insert into book values('3-3','大學(xué)英語(yǔ)','20');
insert into book values('304','小學(xué)英語(yǔ)','25');

兩邊加逗號(hào) ,防止 atesta  匹配 test
--         例:1.,a,b_c,d  匹配 %,b_c,%
--            2.,a,b,     匹配 %,a,%
--            3.,a-b,     匹配 %,a-b,%
1.首先我們寫(xiě)一條sql語(yǔ)句
select s.sid,s.sname,s.bid,
(select listagg(b.bname,',') within group(Order by b.bid) from book b where ',' || s.bid || ',' like '%,' || b.bid || ',%') as bname
from stu s

j1.png

結(jié)果如圖:1-1
我們可以看看 3_4的模糊查找結(jié)果

select  * from book b where b.bid like '%3_4%';
j3.png

所以舆声,我們應(yīng)該避免此處有特殊字符的情況
2.用replace替換_花沉,實(shí)現(xiàn)的sql語(yǔ)句

select s.sid,s.sname,s.bid,
(select listagg(b.bname,',') within group(Order by b.bid) from book b where ',' || replace(s.bid,'_','') || ',' like '%,' || replace(b.bid,'_','') || ',%') as bname
from stu s

結(jié)果如圖:1-2

j2.png

總結(jié):模糊查找代表一個(gè)字符了。3_4可以找到304 纳寂,314主穗、3_4。毙芜。忽媒。等記錄 ,所以查找時(shí)首先把替換為'', 準(zhǔn)確查找所有記錄。
這就是一張表字段有多個(gè)外鍵值腋粥,查找的方法記錄晦雨。
ly_dv 一個(gè)小菜鳥(niǎo)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市隘冲,隨后出現(xiàn)的幾起案子闹瞧,更是在濱河造成了極大的恐慌,老刑警劉巖展辞,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奥邮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡罗珍,警方通過(guò)查閱死者的電腦和手機(jī)洽腺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)覆旱,“玉大人蘸朋,你說(shuō)我怎么就攤上這事】鄢” “怎么了藕坯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)噪沙。 經(jīng)常有香客問(wèn)我炼彪,道長(zhǎng),這世上最難降的妖魔是什么曲聂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任霹购,我火速辦了婚禮,結(jié)果婚禮上朋腋,老公的妹妹穿的比我還像新娘齐疙。我一直安慰自己膜楷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布贞奋。 她就那樣靜靜地躺著赌厅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轿塔。 梳的紋絲不亂的頭發(fā)上特愿,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音勾缭,去河邊找鬼揍障。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俩由,可吹牛的內(nèi)容都是我干的毒嫡。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼幻梯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兜畸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起碘梢,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咬摇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后煞躬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肛鹏,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年恩沛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了龄坪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡复唤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烛卧,到底是詐尸還是另有隱情佛纫,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布总放,位于F島的核電站呈宇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏局雄。R本人自食惡果不足惜甥啄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炬搭。 院中可真熱鬧蜈漓,春花似錦穆桂、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至有额,卻和暖如春般又,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巍佑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工茴迁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萤衰。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓堕义,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腻菇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胳螟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,374評(píng)論 0 5
  • EXCEL小白的進(jìn)階之路 從16年3月申請(qǐng)的小號(hào),到現(xiàn)在發(fā)表的微文筹吐,屈指可數(shù)糖耸,糾結(jié)于想要好的內(nèi)容,好的頁(yè)面排版丘薛,然...
    Rachelhaha閱讀 933評(píng)論 0 0
  • 語(yǔ) 句 功 能 數(shù)據(jù)操作 SELECT——從數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)行和列INSERT——向數(shù)據(jù)庫(kù)表添加新數(shù)據(jù)行DELE...
    戰(zhàn)敭閱讀 5,079評(píng)論 0 53
  • 就在剛才洋侨,我簡(jiǎn)單地回顧了一下今天要上課的內(nèi)容舍扰。上課的內(nèi)容其實(shí)很簡(jiǎn)單,20分鐘的暢談(說(shuō)說(shuō)軍訓(xùn))希坚,60分鐘的寫(xiě)作(寫(xiě)...
    素兮言閱讀 1,244評(píng)論 7 8
  • 我想要發(fā)明一支神奇的筆边苹。 它是一只銀質(zhì)的鋼筆、 長(zhǎng)度大概是10厘米裁僧、形狀是圓形的个束,上面刻著梅花的印記。...
    白依娜閱讀 191評(píng)論 0 0