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