SQL根據字串B分隔字串A

2022-05-14 19:01:33 字數 1883 閱讀 9071

建立錶值函式:

1

create

function

[dbo

].[f_split]2

(3@splitstring

nvarchar(max), --

源字串a

4@separator

nvarchar(10)=''

--分隔字串b,預設為空格5)

6returns

@splitstringstable

table

--輸出的資料表7(

8[id]

intidentity(1,1),9

[value

]nvarchar(max)10

)11as12

begin

13declare

@currentindex

int;--

開始擷取字串a的位置

14declare

@findindex

int;--

查詢到字串b的位置

15declare

@returntext

nvarchar(max);--

分割後的字元

1617

--儲存被擷取字串b的長度

18declare

@separatorlen

int; set

@separatorlen

=len(@separator

);19

20select

@currentindex=1

;21while(@currentindex

<=

len(@splitstring))--

遍歷字串a

22begin

23--

charindex(目標字串,被查詢的字串,開始查詢的位置(為空時預設從第一位開始查詢))

24select

@findindex

=charindex(@separator,@splitstring,@currentindex);--

獲取b在a中的位置

2526

--如果b不存在a中,下一次查詢到字串的位置為:a的長度+b的長度

27if(@findindex=0

or@findindex

isnull) begin

select

@findindex

=len(@splitstring)+

@separatorlen;end

28--

獲取分隔後的字元

2930

--substring(被擷取的字串,開始擷取字串的位置,擷取字串的長度)

31select

@returntext

=substring(@splitstring,@currentindex,@findindex

-@currentindex

);32

insert

into

@splitstringstable([

value

]) values(@returntext

);33

34--

初始化開始擷取字串a的位置

35select

@currentindex

=@findindex

+@separatorlen;36

end37

return;38

end

查詢到的結果如下:

sql 字串分隔函式

declare str varchar max declare i int set str 123,456,789 set i charindex str print i print left str,i 1 分隔字串 例如 123,456,789 返回 例如 123 456 789 create ...

SQL 字串分隔函式

查詢某個 逗號分隔的字段 select from accinformation a where 啟用 in select from dbo.fnsplitstr ccaption,select from dbo.fnsplitstr 1,2,3 create function dbo fnsplit...

字串分隔

題目 連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。輸入 abc 123456789輸出 abc00000 12345678 90000000 include include using namespace std char str...