使用預存程序分割字串

Designed by Freepik
這是原本在104表單系統內的預存程序,
修改後紀錄一下~

能在某些特殊狀況下會用到的預存程序,
能夠直接使用預存程序將字串分割。
下方的範例中,分割字元為3個,
如果需要增加~可以自己研究看看囉。
PS:使用方法一樣在範例裡面~

圖片來源Designed by Freepik


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER    FUNCTION [dbo].[fnCharToTable]

--'程式名稱:字串分割
--add by Percy 2017/9/4
--SELECT * from dbo.fnCharToTable('abc,cde,edg',',')

(@strInputString NVARCHAR(4000) , @strSplitChar NVARCHAR(3))
RETURNS @tb_List TABLE (CODE_ID INT IDENTITY(1,1),CODE NVARCHAR(3) )
AS

BEGIN

DECLARE @intInputStringLength Int
DECLARE @intlPosition Int
DECLARE @intSplitChar Int

SET @intInputStringLength = LEN ( @strInputString )
SET @intlPosition=1
SET @intSplitChar=1

WHILE @intlPosition <= @intInputStringLength
BEGIN
SET @intSplitChar = CHARINDEX ( @strSplitChar , @strInputString , @intlPosition)
IF @intSplitChar = 0
BEGIN
INSERT @tb_List (CODE )
SELECT SUBSTRING( @strInputString , @intlPosition ,1+ @intInputStringLength - @intlPosition)
SET @intlPosition= @intInputStringLength + 1
END

ELSE
BEGIN
INSERT @tb_List ( CODE )
SELECT SUBSTRING( @strInputString , @intlPosition , @intSplitChar - @intlPosition)
SET @intlPosition = @intSplitChar+1
END
END

DELETE @tb_List WHERE RTRIM(CODE)=''
RETURN
END

沒有留言:

張貼留言

技術提供:Blogger.