Tag Archive string_split

MSSQL: ตัด string แทน STRING_SPLIT ( polyfill )

ตัว sql server ที่เก่ากว่ารุ่น 2016 จะไม่มี function string_split จริง ๆ เราสามารถเขียนฟังก์ชั่น polyfill ในเอสคิวเอล เซิร์ฟเวอร์เองให้ทำงานแทนตัวนี้ได้

CREATE FUNCTION STRING_SPLIT_POLYFILL2016 (
	@string NVARCHAR(4000)
	,@separator NVARCHAR(4000)
	)
RETURNS @T TABLE (ColName VARCHAR(4000))
AS
BEGIN
	/*
pitt phunsanit
polyfill of STRING_SPLIT in SQL Server 2016
https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15
https://stackoverflow.com/questions/46902892/string-split-in-sql-server-2012
*/
	DECLARE @Number VARCHAR(4000);

	SET @string = @string + @separator;

	WHILE CHARINDEX(@separator, @string) > 0
	BEGIN
		SET @Number = SUBSTRING(@string, 0, CHARINDEX(@separator, @string));
		SET @string = SUBSTRING(@string, CHARINDEX(@separator, @string) + 1, LEN(@string));

		INSERT INTO @T (ColName)
		VALUES (@Number)
	END

	RETURN
END
	/*
DECLARE @IDS NVARCHAR(4000)
SET @IDS = 'pitt,phunsanit,01,02,03,4,5,6,7,8,9,10,พิชญ์,พันธุ์สนิท';

SELECT *
FROM STRING_SPLIT_POLYFILL2016(@IDS, ',')
*/

ตัวอย่างการทำงานจริง https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=61f44fe72003f01f273dc4849ad9aa28

Cr. STRING_SPLIT in SQL Server 2012