Sql Server 拆分字符串 Function 很实用
2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址:https://cloud.tencent.com/act/cps/redirect?redirect=1062
2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址:https://www.aliyun.com/minisite/goods
ALTER PROCEDURE [dbo].[SP_OPERATE_STRINGLIST_SPLIT] @STRINGLIST NVARCHAR(4000), --被分解的清单字符串 @INDEX INT, --要取段的索引(从1开始) @
CREATE FUNCTION fun_StrSplit
(@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
例如:select * from fun_StrSplit('DDR1 512M 400*3','*')
输出结果 str_id string
1 DDR1 512M 400
2 3
函数 dbo.split create function dbo.split ( @c varchar(1000), @split varchar(2) ) returns @t table(name varchar(100)) as begin whi
相关阅读排行
- 1php 连sql server 2008R2 报错 mssql_connect() [function.mssql-connect]: Unable to connect to server
- 2Sql Server Function函数 is not a recognized built-in function name
- 3Sql Server 拆分字符串 Function 很实用
- 4SQL Server 2008 function types in T-SQL
- 5sql server function example to find managed employees