現有如下需求:需要將字串
1,2,3,4,5,6,7
拆分成123
4567
分析:為了完成上述功能,在mysql中提供了一些字串操作的函式,其中substring_index(str, delim, count)
str: 要處理的字串
delim: 分割符
count: 計數 如果為正數,則從左開始數,如果為負數,則從右開始數
例:str = 'www.baidu.com';
有了這個函式的幫助,我們還需要確定什麼呢?需要知道 當前要分割的位置
如何來獲取當前要分割的位置呢?我們可以先獲取總共能拆分成多少個字串
select length('1,2,3,4,5,6,7') - length(replace('1,2,3,4,5,6,7', ',', '')) + 1;
結果為7,那麼其實我們想要的就是遍歷1到6,分別獲取當前位置的字串:select substring_index(substring_index('1,2,3,4,5,6,7',',', index), ',', -1)
其中index就是我們要遍歷的位置,所以為了遍歷,我們需要乙個關聯乙個輔助表來得到當前位置,最後的設計如下:
[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
onb.help_topic_id < (length(t.context) - length(
replace
(t.context,
',',
'')) + 1);
其中表test資料如下:
idcontext
21,2,3,4,5,6,7
這裡使用到mysql的內建表help_topic_id,裡面有508條資料(不同版本資料條數有差別),使用者需要有對該錶查詢的許可權才行,這樣的話只滿足分割數量少於508條的字串,否則應該自定義輔助表,設定更大的乙個遞增列
mysql如何進行以,分割的字串的拆分
現有如下需求 需要將字串 1,2,3,4,5,6,7 拆分成分析 為了完成上述功能,在mysql中提供了一些字串操作的函式,其中substring index str,delim,count str 要處理的字串 delim 分割符 count 計數 如果為正數,則從左開始數,如果為負數,則從右開始...
mysql如何進行以,分割的字串的拆分
現有如下需求 需要將字串 1,2,3,4,5,6,7 拆分成123 4567 分析 為了完成上述功能,在mysql中提供了一些字串操作的函式,其中substring index str,delim,count str 要處理的字串 delim 分割符 count 計數 如果為正數,則從左開始數,如果...
如何進行mysql的優化
1 設計表的時候考慮選擇什麼樣的儲存引擎,myisam不之策事務,但查詢速度快,不過現在一般採用的都是inndb,能符合95 的專案需求。2 避免全表查詢的操作。3 在where 和 order by 的字段建立索引。但索引不是越多越好,會使insert 和update 的速度變慢。4 盡量不要採用...