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

2021-08-25 18:23:01 字數 2127 閱讀 3230

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),'')

endinsert @t(col)

values

(@c)

return

end

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

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

create

function [dbo].[f_split](@s varchar

(8000), @split varchar

(10)

)returns

tableas

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')

andcharindex

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

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

create

function [dbo].[d_split] (@inputstr varchar

(8000),@seprator varchar

(10))

returns

@temp table

(a varchar

(200))as

begin

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--------- a

b cd e

*/

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

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...