<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
有個群友問一個問題
這表的ancestors列存放的是所有的祖先節點,以,
分隔
例如我查詢dept_id為103的所有祖先節點,現在我只有一個dept_id該怎麼查
然後我去網上找到這樣一個神奇的sql,改改表名就成了下面的這樣
SELECT substring_index( substring_index( a.ancestors, ',', b.help_topic_id + 1 ), ',',- 1 ) AS shareholder FROM sys_dept a JOIN mysql.help_topic b ON b.help_topic_id < ( length( a.ancestors ) - length( REPLACE ( a.ancestors, ',', '' ) ) + 1 ) WHERE dept_id = 103
嗯,沒錯結果出來了,然後我就很好奇,什麼原理,一個個來看
這個是一個mysql自帶的幫助解釋註釋表,查詢結果如下
id從0開始,我這個版本最大id到584,版本不同應該id最大值也不一樣,這個表的作用一會說
這個函數應該都知道吧,替換字元用的
獲取字串的長度
查分字串,三個引數,要拆分的字串,根據拆分的字元,從第幾個開始
如果最後的那個引數為正數則從左開始數,然後獲取對應下標左邊的所有字元
如果為負數,則從右邊開始數,獲取對應下標右邊的所有字串,這個就不演示了
先來看第一段
( length( a.ancestors ) - length( REPLACE ( a.ancestors, ',', '' ) ) + 1 )
我們假設當前資料的ancestors值為 0,100,101
那麼第一個length(a.ancestors)
的值就是9 減去後面的一段
length( REPLACE ( a.ancestors, ',', '' ) )
因為我們假設的值裡面有兩個 ,
所以length為7 最後在加1 那麼這段值為 3
和前面的 join on條件能查出的資料也就是mysql.help_topic
這個表中所有id小於3的資料,也就是id為0,1,2的三條資料
那麼現在先來看看這樣查詢的結果是啥
那麼我們假設現在是第一行,mysql.help_topic
表中的help_topic_id
為0
substring_index( substring_index( a.ancestors, ',', b.help_topic_id + 1 ), ',',- 1 )
最裡面的substring_index 拆分後為0,因為沒有能在拆分的了所以外面的substring_index返回的也是0
第二行help_topic_id
為1的時候獲取結果為0,100
然後執行外層的substring_index 根據,
拆分,值為-1 所以從右邊找一位,獲取的值就是100
第三行結果為0,100,101
,外層substring_index 執行後結果為101
....只能心中大喊牛逼
那麼現在知道mysql.help_topic
這個表的作用了嗎?就是用來對拆分出的資料分行,專業點叫笛卡爾積
(真的不懂..)
這種方法也有缺點:就是拆出的行數不能大於mysql.help_topic
這個表的資料條數
到此這篇關於mysql拆分字串作為查詢條件的範例程式碼的文章就介紹到這了,更多相關mysql拆分字串查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45