題目要求
資料庫中 num字段值為:
實現的效果:需要將一行資料變成多行
實現的sql
select
substring_index(substring_index('7654,7698,7782,7788',',',help_topic_id+1),',',-1) as num
from
mysql.help_topic
where
help_topic_id < length('7654,7698,7782,7788')-length(replace('7654,7698,7782,7788',',',''))+1
涉及的知識點
一、字串拆分: substring_index(str, delim, count)
引數解說
引數名解釋str
需要拆分的字串
delim
分隔符,通過某字元進行拆分
count
當 count 為正數,取第 n 個分隔符之前的所有字元; 當 count 為負數,取倒數第 n 個分隔符之後的所有字元。
2. 舉例
(1)獲取第2個以「,」逗號為分隔符之前的所有字元。
substring_index('7654,7698,7782,7788',',',2)
(2)獲取倒數第2個以「,」逗號分隔符之後的所有字元
substring_index('7654,7698,7782,7788',',',-2)
二、替換函式:replace( str, from_str, to_str)引數解說
引數名解釋str
需要進行替換的字串
from_str
需要被替換的字串
to_str
需要替換的字串
2. 舉例
(1)將分隔符「,」逗號替換為「」空。
三、獲取字串長度:length( str )引數解說
引數名解釋str
需要計算長度的字串
2. 舉例
(1)獲取 『7654,7698,7782,7788』 字串的長度
實現的sql解析
select
substring_index(substring_index('7654,7698,7782,7788',',',help_topic_id+1),',',-1) as num
from
mysql.help_topic
where
help_topic_id < length('7654,7698,7782,7788')-length(replace('7654,7698,7782,7788',',',''))+1
此處利用 mysql 庫的 help_topic 表的 help_topic_id 來作為變數,因為 help_topic_id 是自增的,當然也可以用其他表的自增欄位輔助。
help_topic 表:
實現步驟:
step1:首先獲取最後需被拆分成多少個字串,利用 help_topic_id 來模擬遍歷 第n個字串。
涉及的**片段:
step2:根據「,」逗號來拆分字串,此處利用 substring_index(str, delim, count) 函式,最後把結果賦值給 num 字段。
涉及的**片段:
substring_index(substring_index('7654,7698,7782,7788',',',help_topic_id+1),',',-1) as num
第一步:
以」,」逗號為分隔符,根據 help_topic_id 的值來擷取第n+1個分隔符之前所有的字串。 (此處 n+1 是因為help_topic_id 是從0開始算起,而此處需從第1個分隔符開始獲取。)
substring_index('7654,7698,7782,7788',',',help_topic_id+1)
eg:
當 help_topic_id = 0時,獲取到的字串 = 7654
當 help_topic_id = 1時,獲取到的字串 = 7654,7698
…(以此類推)
第二步:
以」,」逗號為分隔符,擷取倒數第1個分隔符之後的所有字串。
substring_index(substring_index('7654,7698,7782,7788',',',help_topic_id+1),',',-1)
eg:
根據第一步,當 help_topic_id = 0時,獲取到的字串 = 7654,此時第二步擷取的字串 = 7654
根據第一步,當 help_topic_id = 1時,獲取到的字串 = 7654,7698,此時第二步擷取的字串 = 7698
…(以此類推)
最終成功實現了以下效果 ~
注:不含分隔符的字串拆分可參考 mysql——字串拆分(無分隔符的字串擷取)
字串拆分,根據指定分隔符拆分字串
有時需要根據指定內容,完成對字串的拆分,針對這個需求,將字串函式進行整合,完成了拆分字串的功能 比如 我們有一組資料 splitxxlinexxtoxxarray 中間有固定分隔字串xx,執行下面子函式,就能獲得字串資料 split line to array。注意 拆分完成的字串陣列是由此函式完成...
4 1拆分含有多種分隔符的字串
coding utf 8 實際案例 我們要某個字串一句分隔符號拆分不同的字段,該字串包含多種不同的分隔符,例如 s ab cd efg hi,jkl mn topq rst,uvw txyz 其中 t 都是分隔符號,如何處理?解決方案 方法一 連續使用str.split 方法,每次處理一種分隔符號....
8 拆分含有多種分隔符的字串
例如,某個字串包含多種不同的分隔符,如 s ab cd efg hi,jkl mn topq rst,uvw txyz 其中,t都是分隔符號。要求 把該字串根據分隔符號拆分不同的字段。解決方案 連續使用字串的split 方法,每次處理一種分隔符號 使用正規表示式的re.split 方法 推薦 t t...