SQL Server数据字段拆分,合并

SQL Server数据字段拆分,合并

ALTER FUNCTION [dbo].[Img_split]
( @str  nvarchar(1024) ,--要拆分的字段
  @fengefu  nvarchar(20) ,--分隔符
	@addchar  nvarchar(100)--要添加的字符
)
RETURNS  @table TABLE(id INT,val NVARCHAR(500))-- nvarchar
AS
BEGIN
	DECLARE @index INT,@startsplit INT,@id INT,@result NVARCHAR(500) --@index分隔符所在的位置的下标 @startsplit 每次分割开始的位置
		SELECT @index=CHARINDEX(@fengefu,@str),@startsplit=1,@id=1
		IF @index=0
		  BEGIN
			SELECT @result = @addchar + @str

                INSERT INTO @table VALUES (@id, @result) --要截取的字符串   开始位置  要截取的长度
			END
		ELSE
				BEGIN
				    WHILE @index>0
    BEGIN
        IF @id>1  --第一次循环之后 都执行这个方法体中的代码
        BEGIN 
            SELECT @startsplit=@index+LEN(@fengefu) --分割开始位置等于 之前的字符下标位置+字符本身的长度
            SELECT @index=CHARINDEX(@fengefu,@str,@startsplit)
            
        END 
        IF @index>0   --第一次循环 截取位置从@startsplit=1开始  
            BEGIN 
						   SELECT @result = @addchar + SUBSTRING(@str,@startsplit,@index-@startsplit)

                INSERT INTO @table VALUES (@id, @result) --要截取的字符串   开始位置  要截取的长度
            END 
        ELSE 
        BEGIN   --最后一次循环  此时由于匹配不到分割字符 @index=0 截取剩余的字符串
			
				UPDATE @table SET val=val+','+ @addchar+SUBSTRING(@str,@startsplit,LEN(@str)-@startsplit+1) WHERE id=1
				
				--SELECT @result = @addchar + SUBSTRING(@str,@startsplit,LEN(@str)-@startsplit+1)
				
            --INSERT INTO @table VALUES (@id,@result)
        END 
        SELECT @id=@id+1
    END
				END
		

	
	RETURN 

END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值