当前位置:Gxlcms > 数据库问题 > sql server split函数

sql server split函数

时间:2021-07-01 10:21:17 帮助过:42人阅读

---------------------------------------------------------------------- -- 版权:2011 -- 时间:2011-06-17 -- 用途:切分字符串,将忽略连续分隔符和分隔符之间的空字符 -- 用法:SELECT * FROM [dbo].[WF_Split](‘a,b,c,d‘,‘,‘); --    返回表结构: --    id    自增主键 --    rs    分隔符切分的每个段落 ---------------------------------------------------------------------- USE QPTreasureDB GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N‘[dbo].[WF_Split]‘) AND type in (N‘FN‘, N‘IF‘, N‘TF‘, N‘FS‘, N‘FT‘)) DROP FUNCTION dbo.[WF_Split] GO ---------------------------------------------------------------- CREATE FUNCTION [dbo].[WF_Split] (   @strSource NVARCHAR(4000),  --要操作的字符串   @strSeparator CHAR(1)     --分隔符,单字节 ) RETURNS @tbResult TABLE(id INT IDENTITY(1,1),rs NVARCHAR(1000)) WITH ENCRYPTION AS BEGIN DECLARE @dwIndex INT ,@strResult NVARCHAR(1000); SET @strSource = RTRIM(LTRIM(@strSource)); -- 消空格 SET @dwIndex = CHARINDEX(@strSeparator,@strSource);  -- 取得第一个分隔符的位置
WHILE @dwIndex>0 BEGIN SET @strResult = LTRIM(RTRIM(LEFT(@strSource,@dwIndex-1))); IF @strResult IS NULL OR @strResult = ‘‘ OR @strResult = @strSeparator BEGIN SET @strSeparator = SUBSTRING(@strSource,@dwIndex+1,LEN(@strSource)-@dwIndex); --将要操作的字符串去除已切分部分 SET @dwIndex = CHARINDEX(@strSeparator,@strSource); --循环量增加     CONTINUE; END
INSERT @tbResult VALUES(@strResult); SET @strSource = SUBSTRING(@strSource,@dwIndex+1,LEN(@strSource)-@dwIndex); --将要操作的字符串去除已切分部分 SET @dwIndex=CHARINDEX(@strSeparator,@strSource); --循环量增加 END --处理最后一节 IF @strSource IS NOT NULL AND LTRIM(RTRIM(@strSource)) <> ‘‘ AND @strSource <> @strSeparator BEGIN INSERT @tbResult VALUES(@strSource) END
RETURN; END



sql server split函数

标签:cti   source   nbsp   and   操作   returns   string   部分   select   

人气教程排行