葉子函式分享九 根據字元分割字串的三種寫法

2021-10-19 09:21:17 字數 1725 閱讀 9048

go

--建立函式(第一版)

create function [dbo].[m_split](@c varchar(2000),@split varchar(2))

returns @t table(col varchar(200))

as

begin

while(charindex(@split,@c)<>0)

begin

insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))

set @c = stuff(@c,1,charindex(@split,@c),'')

end

insert @t(col) values (@c)

return

end

--下面兩種是在論壇看到高手們發的

go--建立函式(第二版)(fredrickhu(小f))

create function [dbo].[f_split](@s varchar(8000), @split varchar(10) )

returns table

as return

(select substring(@s,number,charindex(@split,@s+@split,number)-number)as col

from master..spt_values

where type='p' and number<=len(@s+'a')

and charindex(@split,@split+@s,number)=number) go

--建立函式(第三版)(dawugui(愛新覺羅.毓華))

create function [dbo].[d_split] (@inputstr varchar(8000),@seprator varchar(10))

returns @temp table (a varchar(200))

asbegin

declare @i int

set @inputstr = rtrim(ltrim(@inputstr))

set @i = charindex(@seprator, @inputstr)

while @i >= 1

begin

insert @temp values(left(@inputstr, @i - 1))

set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)

set @i = charindex(@seprator, @inputstr)

endif @inputstr <> '/'

insert @temp values(@inputstr)

return

end

--測試示例

declare @sql varchar(20)

set @sql='a,b,c,d,e'

select * from dbo.m_split(@sql,',')

select * from dbo.f_split(@sql,',')

select * from dbo.d_split(@sql,',')

--執行結果(結果是相同的)

/*col

---------ab

cde*/

葉子函式分享九 根據字元分割字串的三種寫法

go 建立函式 第一版 create function dbo m split c varchar 2000 split varchar 2 returns t table col varchar 200 as begin while charindex split,c 0 begin insert...

葉子函式分享五十 無序字元比較函式

go 建立函式 第一版 create function get orderstr str varchar 8000 returns varchar 8000 as begin set str rtrim str declare tb table s varchar 1 a int while len...

葉子函式分享二十二 根據日期返回星座

go 建立函式 csdn fredrickhu 小f 提供 create function udf getstar datetime returns varchar 100 返回日期所屬星座 begin return select max star from select 魔羯座 as star,1...