亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

各種字符串分拆處理函數(shù).sql

系統(tǒng) 1971 0

--各種字符串分函數(shù)

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_splitSTR]
GO

--3.2.1 循環(huán)截取法
CREATE FUNCTION f_splitSTR(
@s?? varchar(8000),?? --待分拆的字符串
@split varchar(10)???? --數(shù)據(jù)分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
?DECLARE @splitlen int
?SET @splitlen=LEN(@split+'a')-2
?WHILE CHARINDEX(@split,@s)>0
?BEGIN
??INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
??SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
?END
?INSERT @re VALUES(@s)
?RETURN
END
GO


/*==============================================*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_splitSTR]
GO

--3.2.3.1 使用臨時性分拆輔助表法
CREATE FUNCTION f_splitSTR(
@s?? varchar(8000),? --待分拆的字符串
@split varchar(10)???? --數(shù)據(jù)分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
?--創(chuàng)建分拆處理的輔助表(用戶定義函數(shù)中只能操作表變量)
?DECLARE @t TABLE(ID int IDENTITY,b bit)
?INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b

?INSERT @re SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID)
?FROM @t
?WHERE ID<=LEN(@s+'a')
??AND CHARINDEX(@split,@split+@s,ID)=ID
?RETURN
END
GO

/*==============================================*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_splitSTR]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_splitSTR]') and objectproperty(id,N'IsUserTable')=1)
drop table [dbo].[tb_splitSTR]
GO

--3.2.3.2 使用永久性分拆輔助表法
--字符串分拆輔助表
SELECT TOP 8000 ID=IDENTITY(int,1,1) INTO dbo.tb_splitSTR
FROM syscolumns a,syscolumns b
GO

--字符串分拆處理函數(shù)
CREATE FUNCTION f_splitSTR(
@s???? varchar(8000),? --待分拆的字符串
@split? varchar(10)???? --數(shù)據(jù)分隔符
)RETURNS TABLE
AS
RETURN(
?SELECT col=CAST(SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) as varchar(100))
?FROM tb_splitSTR
?WHERE ID<=LEN(@s+'a')
??AND CHARINDEX(@split,@split+@s,ID)=ID)
GO


/*==============================================*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_splitSTR]
GO

--3.2.5 將數(shù)據(jù)項按數(shù)字與非數(shù)字再次拆份
CREATE FUNCTION f_splitSTR(
@s?? varchar(8000),??? --待分拆的字符串
@split varchar(10)???? --數(shù)據(jù)分隔符
)RETURNS @re TABLE(No varchar(100),Value varchar(20))
AS
BEGIN
?--創(chuàng)建分拆處理的輔助表(用戶定義函數(shù)中只能操作表變量)
?DECLARE @t TABLE(ID int IDENTITY,b bit)
?INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b

?INSERT @re
?SELECT?No=REVERSE(STUFF(col,1,PATINDEX('%[^-^.^0-9]%',col+'a')-1,'')),
??Value=REVERSE(LEFT(col,PATINDEX('%[^-^.^0-9]%',col+'a')-1))
?FROM(
??SELECT col=REVERSE(SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID))
??FROM @t
??WHERE ID<=LEN(@s+'a')
???AND CHARINDEX(@split,@split+@s,ID)=ID)a
?RETURN
END
GO


/*==============================================*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_splitSTR]
GO

--3.2.6 分拆短信數(shù)據(jù)
CREATE FUNCTION f_splitSTR(@s varchar(8000))
RETURNS @re TABLE(split varchar(10),value varchar(100))
AS
BEGIN
?DECLARE @splits TABLE(split varchar(10),splitlen as LEN(split))
?INSERT @splits(split)
?SELECT 'AC' UNION ALL
?SELECT 'BC' UNION ALL
?SELECT 'CC' UNION ALL
?SELECT 'DC'?
?DECLARE @pos1 int,@pos2 int,@split varchar(10),@splitlen int
?SELECT TOP 1
??@pos1=1,@split=split,@splitlen=splitlen
?FROM @splits
?WHERE @s LIKE split+'%'
?WHILE @pos1>0
?BEGIN
??SELECT TOP 1
???@pos2=CHARINDEX(split,@s,@splitlen+1)
??FROM @splits
??WHERE CHARINDEX(split,@s,@splitlen+1)>0
??ORDER BY CHARINDEX(split,@s,@splitlen+1)
??IF @@ROWCOUNT=0
??BEGIN
???INSERT @re VALUES(@split,STUFF(@s,1,@splitlen,''))
???RETURN
??END
??ELSE
??BEGIN
???INSERT @re VALUES(@split,SUBSTRING(@s,@splitlen+1,@pos2-@splitlen-1))
???SELECT TOP 1
????@pos1=1,@split=split,@splitlen=splitlen,@s=STUFF(@s,1,@pos2-1,'')
???FROM @splits
???WHERE STUFF(@s,1,@pos2-1,'') LIKE split+'%'
??END
?END
?RETURN
END
GO

?

各種字符串分拆處理函數(shù).sql


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产性一交一乱一伦一色一情 | 国产在线欧美日韩一区二区 | 欧美性xxxxxx爱 | 中文字幕亚洲精品第一区 | 成人性一级视频在线观看 | 久久频精品99香蕉国产 | 亚洲精品美女久久久久99 | 久久精品高清 | 中文字幕日本在线 | 中文字幕 亚洲精品 | 99久久香蕉| 久久久精品 | 久久成人视 | 欧美va亚洲va国产综合 | 99热最新网站地址获取 | 国内一区亚洲综合图区欧美 | 玖玖在线视频 | 强制高潮18xxxxhd日韩 | 日韩精品国产自在久久现线拍 | 国产91小视频在线观看 | 国内精品福利 | 精品一区二区三区三区 | 久久免费视频6 | 成人一级网站 | 99视频精品全部在线播放 | 毛片免费毛片一级jjj毛片 | 青青青青青青久久久免费观看 | 奇米亚洲春色 | 欧美大屁股精品毛片视频 | 日本福利片国产午夜久久 | 国产伦精品一区二区三区免费观看 | 亚洲精品一区二区三区四区手机版 | 精品久久一区二区 | 男人猛躁女人成人免费视频 | 天天噜夜夜操 | 国产成人小视频在线观看 | 伊人色院成人蜜桃视频 | 成人私人影院www片免费高清 | 青春草久久 | 亚洲国产成人精品一区二区三区 | 欧美一区二区三区香蕉视 |