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

SQL點滴3—一個簡單的字符串分割函數(shù)

系統(tǒng) 2241 0
原文: SQL點滴3—一個簡單的字符串分割函數(shù)

偶然在電腦里看到以前保存的這個函數(shù),是將一個單獨字符串切分成一組字符串,這里分隔符是英文逗號“,”? 遇到其他情況只要稍加修改就好了

CREATE FUNCTION dbo.f_splitstr(

??? @str varchar(8000)
)RETURNS @r TABLE(id int IDENTITY(1, 1), value varchar(5000))
AS
BEGIN
?/* Function body */
??? DECLARE @pos int
??? SET @pos = CHARINDEX(',', @str)
??? WHILE @pos > 0
??? BEGIN
??????? INSERT @r(value) VALUES(LEFT(@str, @pos - 1))
??????? SELECT
??????????? @str = STUFF(@str, 1, @pos, ''),
??????????? @pos = CHARINDEX(',', @str)
??? END
??? IF @str > ''
??????? INSERT @r(value) VALUES(@str)
??? RETURN

END

?截圖如下

SQL點滴3—一個簡單的字符串分割函數(shù)

?

2011-11-15 10:15:28

今天在園子里看到另外一個實現(xiàn)方法,不妨借鑒一下:

      
        SET
      
       ANSI_NULLS 
      
        ON
      
      
GO
SET QUOTED_IDENTIFIER ON
GO

/* by kudychen 2011-9-28 */
CREATE function [ dbo ] . [ SplitString ]
(
@Input nvarchar ( max ), -- input string to be separated
@Separator nvarchar ( max ) = ' , ' , -- a string that delimit the substrings in the input string
@RemoveEmptyEntries bit = 1 -- the return value does not include array elements that contain an empty string
)
returns @TABLE table
(
[ Id ] int identity ( 1 , 1 ),
[ Value ] nvarchar ( max ))
as
begin
declare @Index int , @Entry nvarchar ( max )
set @Index = charindex ( @Separator , @Input )

while ( @Index > 0 )
begin
set @Entry = ltrim ( rtrim ( substring ( @Input , 1 , @Index - 1 )))

if ( @RemoveEmptyEntries = 0 ) or ( @RemoveEmptyEntries = 1 and @Entry <> '' )
begin
insert into @TABLE ( [ Value ] ) Values ( @Entry )
end

set @Input = substring ( @Input , @Index + datalength ( @Separator ) / 2 , len ( @Input ))
set @Index = charindex ( @Separator , @Input )
end

set @Entry = ltrim ( rtrim ( @Input ))
if ( @RemoveEmptyEntries = 0 ) or ( @RemoveEmptyEntries = 1 and @Entry <> '' )
begin
insert into @TABLE ( [ Value ] ) Values ( @Entry )
end
return

end

使用方法

      
        declare
      
      
        @str1
      
      
        varchar
      
      (
      
        max
      
      ), 
      
        @str2
      
      
        varchar
      
      (
      
        max
      
      ), 
      
        @str3
      
      
        varchar
      
      (
      
        max
      
      )
      

set @str1 = ' 1,2,3 '
set @str2 = ' 1###2###3 '
set @str3 = ' 1###2###3### '

select [ Value ] from [ dbo ] . [ SplitString ] ( @str1 , ' , ' , 1 )
select [ Value ] from [ dbo ] . [ SplitString ] ( @str2 , ' ### ' , 1 )
select [ Value ] from [ dbo ] . [ SplitString ] ( @str3 , ' ### ' , 0 )

SQL點滴3—一個簡單的字符串分割函數(shù)

里面還有個自增的[Id]字段哦,在某些情況下有可能會用上的,例如根據(jù)Id來保存排序等等。

?

例如根據(jù)某表的ID保存排序:

update a set a.[Order]=t.[Id]???????
from [dbo].[表] as a join [dbo].SplitString('1,2,3', ',', 1) as t on a.[Id]=t.[Value]

具體的應(yīng)用請根據(jù)自己的情況來吧



SQL點滴3—一個簡單的字符串分割函數(shù)


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产一区二区久久 | 老司机永久免费网站在线观看 | 亚洲精品乱码久久久久蜜桃 | 国产尤物精品视频 | 毛片免费全部播放一级 | 伊人久久国产精品 | 亚洲国产综合在线 | 性欧美video另类3d | 久久久久综合网久久 | 爱唯侦察1024入口地址 | 视频三区精品中文字幕 | 国产成人性毛片aaww | 97在线免费 | 亚洲精品九色在线网站 | 欧美真人毛片动作视频 | 亚洲国产精品成人综合久久久 | 午夜国产精品理论片久久影院 | 久久伦理影院 | 中国国产高清一级毛片 | 青青久草在线视频 | 久久狠狠婷婷丁香香蕉 | 亚洲免费在线看 | 中文一区 | 久久精品网址 | 亚洲精品国产精品乱码视色 | 亚洲区一二三四区2021 | 图片区亚洲 | 国产精品视频在线免费观看 | 福利在线播放 | 成人国产午夜在线视频 | 免费a级毛片在线播放 | 久久福利资源国产精品999 | 欧美成人久久一级c片免费 欧美成人剧情中文字幕 | 久久综合噜噜激激的五月天 | 99热这里只有精品一区二 | 宅男噜噜噜66一区二区 | 久久国产成人精品国产成人亚洲 | 亚洲人人精品 | 欧美xxxxx毛片 | 日韩精品免费一区二区三区 | 视频1区 |