Sql Server实现split函数。对字符串按照特定字符串进行拆分。

sql没有split函数,因此需要实现一个函数来实现按照特定符号对字符串进行拆分。上码:

 
GO
/****** Object:  UserDefinedFunction [dbo].[SPLIT]    Script Date: 2020/4/22 9:59:14 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
/*
	名称:SPLIT
	功能描述:拆分字符串
	参数:		
		@SourceSql NVARCHAR(4000),		目标字符串
		@StrSeprate NVARCHAR(10),		间隔字符串
	返回值:
		@temp TABLE(sl NVARCHAR(200))	数据表
	算法:	
	示例:select * FROM dbo.SPLIT('A,B,C,D',',') 返回数据表
		A
		B
		C
		D
	创建时间:2006-10-23
	修改:
	修改时间:
*/

CREATE  FUNCTION [dbo].[SPLIT](@SourceSql VARCHAR(max),@StrSeprate NVARCHAR(10))
RETURNS @temp TABLE(sl NVARCHAR(200))
AS 
BEGIN
	DECLARE @i INT
	SET @SourceSql=RTRIM(LTRIM(@SourceSql))
	SET @i=CHARINDEX(@StrSeprate,@SourceSql)
	WHILE @i>=1
	BEGIN
		INSERT @temp VALUES(LEFT(@SourceSql,@i-1))
		SET @SourceSql=SUBSTRING(@SourceSql,@i+1,LEN(@SourceSql)-@i)
		SET @i=CHARINDEX(@StrSeprate,@SourceSql)
	END
	INSERT @temp VALUES(@SourceSql)
	RETURN 
END
 
GO


使用:

SELECT  *from  [dbo].[SPLIT] ('1001,1002,1003',',') 

------------------------------------------------扩展一点----------------------------------------------

传入的是code的拼接,要求返回name的拼接;例如:输入值为“1001,1002,1003”,返回为“哈哈哈,嘿嘿嘿,啦啦啦”;


GO

/****** Object:  UserDefinedFunction [dbo].[FuncCompanySplite]    Script Date: 2020/4/22 10:04:15 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


-- =============================================
-- Author:		<Author,,>
-- Create date: <Create Date, ,>
-- Description:	<Description, ,>
-- =============================================
CREATE FUNCTION [dbo].[FuncCompanySplite]
(
	@SourceSql VARCHAR(max)
)
returns nvarchar(max)
AS
BEGIN
	DECLARE @cropId nvarchar(50)
	DECLARE @companyNm nvarchar(200)
	DECLARE @companyNms nvarchar(max)
	DECLARE @i INT
	set @SourceSql = @SourceSql+','
	SET @SourceSql=RTRIM(LTRIM(@SourceSql))
	SET @i=CHARINDEX(',',@SourceSql)
	WHILE @i>=1
	BEGIN
	set @cropId  =(LEFT(@SourceSql,@i-1))	
	select @companyNm=companyNm from DV_Company where companyId=@cropId;
		if @companyNms is null
		begin
		 set @companyNms = @companyNm
		end
		 else begin  
		 set @companyNms = @companyNms +','+ @companyNm
		 end
		SET @SourceSql=SUBSTRING(@SourceSql,@i+1,LEN(@SourceSql)-@i)
		SET @i=CHARINDEX(',',@SourceSql)
	END
 
	    RETURN  @companyNms
	 
END
GO


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值