目錄
有分隔符的字串拆分
資料庫中 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
引數解說 解釋
str 需要拆分的字串
delim 分隔符,通過某字元進行拆分
count 當 count 為正數,取第 n 個分隔符之前的所有字元; 當 count 為負數,取倒數第 n 個分隔符之後的所有字元。
舉例
(1)獲取第2個以「,」逗號為分隔符之前的所有字元。引數名 解釋substring_index('7654,7698,7782,7788',',',2)
(2)獲取倒數第2個以「,」逗號分隔符之後的所有字元
substring_index('7654,7698,7782,7788',',',-2)
str 需要進行替換的字串
from_str 需要被替換的字串
to_str 需要替換的字串
2. 舉例
(1)將分隔符「,」逗號替換為「」空。引數名 解釋replace('7654,7698,7782,7788',',','')
str 需要計算長度的字串
舉例
(1)獲取 『7654,7698,7782,7788』 字串的長度此處利用 mysql 庫的 help_topic 表的 help_topic_id 來作為變數,因為 help_topic_id 是自增的,當然也可以用其他表的自增欄位輔助。length('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
help_topic 表:
實現步驟:
step1:首先獲取最後需被拆分成多少個字串,利用 help_topic_id 來模擬遍歷 第n個字串。
涉及的**片段:
help_topic_id < length('7654,7698,7782,7788')-length(replace('7654,7698,7782,7788',',',''))+1step2:根據「,」逗號來拆分字串,此處利用 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——字串拆分(無分隔符的字串擷取)
---------------------
**:
mysql拆分字串
函式 1 從左開始擷取字串 left str,length 說明 left 被擷取字段,擷取長度 例 select left make date,4 as year from t sale billing where make date 2017 06 24 2 從右開始擷取字串 right str...
mysql拆分字串函式
業務需求 拆分字串,然後將數字轉換成中文描述,返回成以,分割的中文描述 修改結束符,防止在mysql命令列中預設分號直接執行 delimiter 建立乙個計算拆分後字串的個數函式 drop function if exists calc length create function calc len...
拆分字串
拆分乙個字串,獲取每一組的key與value。如字串 qq adf f qewr98 eer d9adf t ad34 f qewrqr u adf43 gggg 2344 按照物件導向理念來解決,建立乙個物件 這個是對物件物件,有key和value兩個特性。我們需要把拆分好的資料臨時儲存起來,現在...