日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlserver中实现split分割字符串函数

發(fā)布時間:2025/7/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver中实现split分割字符串函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

常用的.

IF OBJECT_ID (N'fn_split') IS NOT NULL
DROP FUNCTION? fn_split
go
CREATE? function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10),
@p int?????????????????? --要取第幾個數(shù)據(jù),從0開始,如果要返回分割后的數(shù)組列表清刪除--##部分即可
)
returns @temp table (a varchar(200))
as

begin
?declare @i int
?declare @n int? --記錄循環(huán)的次數(shù)
?set @inputstr = rtrim(ltrim(@inputstr))
?set @i = charindex(@seprator, @inputstr)
?SET @n =0??????? --##

? WHILE @i>=1
?begin
??IF? @p=@n? --##
?? begin
???? insert @temp values(left(@inputstr, @i - 1))
?? end
??set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
??set @i = charindex(@seprator, @inputstr)
??SET @n = @n+1 --##
?END

if @inputstr <> '' --最后一位
?IF? @p=@n???????? --##
? insert @temp values(@inputstr)
return
end
go

?

?

?

方法一 
CREATE  FUNCTION uf_StrSplit '1.1.2.50','.'
(@origStr varchar(7000),  --待拆分的字符串
@markStr varchar(100))  --拆分標記,如','
RETURNS @splittable table
(
str_id  varchar(4000) NOT NULL, --編號ID
string  varchar(2000) NOT NULL --拆分后的字符串
)
AS
BEGIN
declare @strlen int,@postion int,@start int,@sublen int,
@TEMPstr varchar(200),@TEMPid int
SELECT @strlen=LEN(@origStr),@start=1,@sublen=0,@postion=1,
@TEMPstr='',@TEMPid=0
if(RIGHT(@origStr,1)<>@markStr )
begin
set @origStr = @origStr + @markStr
end
WHILE((@postion<=@strlen) and (@postion !=0))
BEGIN
IF(CHARINDEX(@markStr,@origStr,@postion)!=0)
BEGIN
SET @sublen=CHARINDEX(@markStr,@origStr,@postion)-@postion;
END
ELSE
BEGIN
SET @sublen=@strlen-@postion+1;
END
IF(@postion<=@strlen)
BEGIN
SET @TEMPid=@TEMPid+1;
SET @TEMPstr=SUBSTRING(@origStr,@postion,@sublen);
INSERT INTO @splittable(str_id,string)
values(@TEMPid,@TEMPstr)
IF(CHARINDEX(@markStr,@origStr,@postion)!=0)
BEGIN
SET @postion=CHARINDEX(@markStr,@origStr,@postion)+1
END
ELSE
BEGIN
SET @postion=@postion+1
END
END
END
RETURN
END
方法二
create function dbo.fn_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)
end

if @inputstr <> ''
insert @temp values(@inputstr)

return
end
go

--調(diào)用

declare @s varchar(1000)

set @s='Sa1,Sb1,Sc'

select * from dbo.fn_split(@s,',')

drop function dbo.fn_splitsqlserver中實現(xiàn)split分割字符串函數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/eastday/archive/2010/04/16/1713851.html

總結(jié)

以上是生活随笔為你收集整理的sqlserver中实现split分割字符串函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。