SQL函数:分离字符串,并返回分离后字符的表

本文介绍了一个SQL Server自定义函数SplitStr,用于将输入的字符串按照指定的分隔符进行拆分,并返回拆分后的结果作为表格。此函数通过循环处理原始字符串,逐次提取子字符串并插入到结果表中,直至所有子字符串都被处理。
ContractedBlock.gifExpandedBlockStart.gifCode
-- =============================================
-- Author:        苏宗伟
-- Create date: 2008-8-1
-- Description:    分离字符串,并返回分离后字符的表
-- =============================================
ALTER FUNCTION [dbo].[SplitStr]
(    
    
-- Add the parameters for the function here
    @Str 
as nvarchar(2048), --需分离的字符串
    @Split 
as nvarchar(50)--分离标志
)
RETURNS @Reports TABLE(subStr nvarchar(
200)) 
AS
    
-- Add the SELECT statement with parameter references here
begin
    declare @index 
int  --查询位置
    declare @start 
int --匹配位置
    declare @end 
int  --分割符长度
    declare @subStr varchar(
255--分离后的字符
    
set @index = 0;
    
while(len(@Str)>0)
    begin
        
set @start = charindex(@Split,@Str,@index);--查询分割符的起始位置
        
set @end = len(@Split)
        
if(@start>0)--表示含有该分割符
        begin
        
--分离子字符串,并将分离后的剩余字符赋值于@Str,以便下次处理
            select @subStr 
= substring(@Str,0,charindex(@Split,@Str,@index));
            select @Str 
= substring(@Str,@start+@end,len(@Str));
        end
        
else
        begin
            select @subStr
=@Str;
            select @Str
='';
        end
        
if(@subStr!='')--值不为空,做插入操作
            insert @Reports select @subStr
    end
    Return
end

转载于:https://www.cnblogs.com/suzongwei/archive/2008/08/01/1258191.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值