在SQL裡使用Split功能,回傳資料表
USE [DBName]
GO
/****** Object: StoredProcedure [dbo].[sp_Tbl_SplitByStr] Script Date: 2019/03/13 上午 09:20:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: mokmoe
-- Create date: 2019/03/13
-- Description: Split by String, Return Table(idx,splitedStr) by Select
-- =============================================
ALTER PROCEDURE [dbo].[sp_Tbl_SplitByStr]
@splitSrc nvarchar(max),
@splitSign nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
declare @varMatchPart varchar(200)
-- 加入idx,方便迴圈取用
declare @splitedTbl Table (idx int identity(1,1),splitedStr varchar(max))
BEGIN
WHILE PATINDEX('%'+@splitSign+'%', @splitSrc) > 0
BEGIN
set @varMatchPart=''
--取出第一段字串
select @varMatchPart=substring(@splitSrc,1,PATINDEX('%'+@splitSign+'%', @splitSrc)-1)
--刪除已擷取字串
select @splitSrc=STUFF(@splitSrc,1,len(@varMatchPart)+len(@splitSign),'')
--空值不要
IF (@varMatchPart <> '')
BEGIN
insert @splitedTbl (splitedStr) values(@varMatchPart)
END
END
--加回最後一段字串
select @varMatchPart=substring(@splitSrc,1,len(@splitSrc))
insert @splitedTbl (splitedStr) values(@varMatchPart)
END
--以資料表方式回傳資訊
select * from @splitedTbl
END