利用遞迴分割(Split)字串

2022-05-02 22:33:16 字數 1540 閱讀 5670

sqlserver

遞迴工作需要將表裡的某個字段分割之後再插入到另乙個表中,其實資料量不大,直接用游標一行一行的取,再利用迴圈來分割之後再實現資料的插入應該可以直接滿足需求。但是,想到遞迴應該也可以實現需求,而且遞迴也不太熟,所以就以試試的心態來做一下,想不到既然實現了需要的效果。

初始化:

--需要分割的結果集

select

* into #tmp_t1

from (values('morning,midday,evening,',1),('breakfast,midday,evening,',2)) as x(daypart,types);

--需要split的字串手動新增了個逗號,

select * from #tmp_t1

需要分割的字段

下面使用公用表示式來實現遞迴:

;with cte_recursive as(

--定位點成員

select

charindex(',',daypart) as idx, --得到第乙個逗號的下標

replace(substring(daypart,1,charindex(',',daypart)),',','') as dp, --得到第乙個逗號前的字元

substring(daypart,len(replace(substring(daypart,1,charindex(',',daypart)),',',''))+2,len(daypart)) as daypart, --擷取第乙個逗號後面的字串

types

from #tmp_t1

union

all--遞迴成員

select

charindex(',',cte.daypart) as idx,

replace(substring(cte.daypart,1,charindex(',',cte.daypart)),',','') as dp,

substring(cte.daypart,len(replace(substring(cte.daypart,1,charindex(',',cte.daypart)),',',''))+2,len(cte.daypart)) as daypart,

cte.types

from cte_recursive cte

inner

join #tmp_t1 t1 on cte.types = t1.types

where

charindex(',',cte.daypart) > 0

--中止遞迴的條件

)select * from cte_recursive --order by types;

遞迴結果

排過序的結果

split分割字串

string tmp weekcode.split new char string yr tmp 0 string wk tmp 1 string tmp regex.split eachl,error regexoptions.ignorecase 用字串來分割 error 把 以 error 為...

字串分割split

知識講解 split 方法將字串分割為字串陣列,並返回此陣列。stringobject.split separator,limit 注意 如果把空字串 用作 separator,那麼 stringobject 中的每個字元之間都會被分割。我們將按照不同的方式來分割字串 使用指定符號分割字串,如下 v...

Python字串 字串分割 split

python split 通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串 str.split str num string.count str 引數str 分隔符,預設為所有的空字元,包括空格 換行 n 製表符 t 等。num 分割次數。usr bin pytho...