如果樓主說的是mysql中實(shí)現(xiàn)類似
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、江陵網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為江陵等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
substr(value,1,charindex(',',value)-1) as qian,substr(value,charindex(',',value)) as hou
的方法,如下:
select substr(value,1,INSTR(value,',')-1) as qian,substr(value,INSTR(value,',')+1) as hou
from biao
mysql如何進(jìn)行以,分割的字符串的拆分
現(xiàn)有如下需求:需要將字符串
1,2,3,4,5,6,7
拆分成
分析:
為了完成上述功能,在mysql中提供了一些字符串操作的函數(shù),其中SUBSTRING_INDEX(str, delim, count)
str: 要處理的字符串
delim: 分割符
count: 計(jì)數(shù) 如果為正數(shù),則從左開始數(shù),如果為負(fù)數(shù),則從右開始數(shù)
例:
str = '';
SELECT substring_index('','.', 1); #www
SELECT substring_index('','.', 2); #
SELECT substring_index('','.', -1); #com
SELECT substring_index('','.', -2); #baidu.com
SELECT substring_index(substring_index('','.', -2), '.', 1); #baidu
有了這個(gè)函數(shù)的幫助,我們還需要確定什么呢?需要知道 當(dāng)前要分割的位置
如何來獲取當(dāng)前要分割的位置呢?我們可以先獲取總共能拆分成多少個(gè)字符串
SELECT LENGTH('1,2,3,4,5,6,7') - LENGTH(REPLACE('1,2,3,4,5,6,7', ',', '')) + 1;
結(jié)果為7,那么其實(shí)我們想要的就是遍歷1到6,分別獲取當(dāng)前位置的字符串:SELECT substring_index(substring_index('1,2,3,4,5,6,7',',', index), ',', -1)
其中index就是我們要遍歷的位置,所以為了遍歷,我們需要一個(gè)關(guān)聯(lián)一個(gè)輔助表來得到當(dāng)前位置,最后的設(shè)計(jì)如下:
[sql] view plain copy
SELECT substring_index(substring_index(t.context,',', b.help_topic_id + 1), ',', -1) FROM test.test t join mysql.help_topic b ON b.help_topic_id (LENGTH(t.context) - LENGTH(REPLACE(t.context, ',', '')) + 1);
其中表test數(shù)據(jù)如下:
id context
2 1,2,3,4,5,6,7
這里使用到mysql的內(nèi)置表help_topic_id,里面有508條數(shù)據(jù)(不同版本數(shù)據(jù)條數(shù)有差別),用戶需要有對該表查詢的權(quán)限才行,這樣的話只滿足分割數(shù)量少于508條的字符串,否則應(yīng)該自定義輔助表,設(shè)置更大的一個(gè)遞增列
SELECT * , substring(content,charindex(N'厲害了',content),3) as [厲害了] FROM news WHERE content LIKE %厲害了%我的哥%’
SELECT * , substring(content,charindex('我的哥',content),3) as [我的哥] FROM news WHERE content LIKE %厲害了%我的哥%’