STRING_SPLIT (Transact-SQL) is avail able from SQL Server 2016
1. This is single paged query to under standing split string.
- Declare @products varchar(200) = '1,2,3,4,5,6,7,8,9,10'
- -- SET @products = SUBSTRING(@products, LEN('ss' + ',') + 1, LEN(@products))
- --select @products
- Declare @individual varchar(20) = null
- WHILE LEN(@products) > 0
- BEGIN
- IF PATINDEX('%,%',@products) > 0
- BEGIN
- SET @individual = SUBSTRING(@products, 0, PATINDEX('%,%',@products))
- SELECT @individual
- SET @products = SUBSTRING(@products, LEN(@individual + ',') + 1,
- LEN(@products)-1)
- END
- ELSE
- BEGIN
- SET @individual = @products
- SET @products = NULL
- SELECT @individual
- END
- END
- select @products
2. Here is a Table Valued Function in sql server which will split a string according to a certain delimiter and returns list of integer values. For this shake your strings must need to be consist of numeric values separated by the desired characters.
//And Now Here how you have to call the SplitString function. From any query page just run it .
- USE [Haicang]
- GO
- /****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 06-Sep-2016 11:42:43 AM ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER FUNCTION [dbo].[SplitString] (@inputString nVARCHAR(500), @delimiter nVARCHAR(1))
- RETURNS @listOfTablesArrangementIDs table (id int)
- AS BEGIN
- /******************************************/
- Declare @individual int
- Declare @individualString varchar(10)
- WHILE LEN(@inputString) > 0
- BEGIN
- IF PATINDEX('%'+@delimiter+'%', @inputString) > 0
- BEGIN
- set @individualString = SUBSTRING(@inputString, 0, PATINDEX('%'+@delimiter+'%',@inputString))
- SET @individual =CONVERT(INT, @individualString)
- insert @listOfTablesArrangementIDs(id) values(@individual)
- SET @inputString = SUBSTRING(@inputString, LEN(@individualString + @delimiter) + 1, LEN(@inputString) + 1)
- END
- ELSE
- BEGIN
- SET @individualString = @inputString
- SET @individual =CONVERT(INT, @individualString)
- insert @listOfTablesArrangementIDs(id) values(@individual)
- SET @inputString = NULL
- END
- END
- RETURN
- END
- declare @listOfTablesArrangementIDs table (id int)
- insert into @listOfTablesArrangementIDs
- SELECT * FROM [dbo].[SplitString] ('1,23,4343' ,',')
- select * from @listOfTablesArrangementIDs
- USE [ProjectInfoDB]
- GO
- /****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 11/19/2018 6:58:46 PM ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- -- =============================================
- -- Author: <Muhammad Ashikuzzaman,,Name2>
- -- Create date: <2018-11-19,,>
- -- Edit date: < >
- -- Description: <Initial server: Server: 192.168.13.253 ,,>
- -- =============================================
- ALTER FUNCTION [dbo].[SplitString] (@inputString NVARCHAR(500), @delimiter NVARCHAR(1))
- RETURNS @listOfTablesArrangementIDs table (id nvarchar(20))
- AS BEGIN
- /******************************************/
- Declare @individual nvarchar(20)
- Declare @individualString nvarchar(20)
- WHILE LEN(@inputString) > 0
- BEGIN
- IF PATINDEX('%'+@delimiter+'%', @inputString) > 0
- BEGIN
- set @individualString = SUBSTRING(@inputString, 0, PATINDEX('%'+@delimiter+'%',@inputString))
- SET @individual =CONVERT(nvarchar(20), @individualString)
- insert @listOfTablesArrangementIDs(id) values(@individual)
- SET @inputString = SUBSTRING(@inputString, LEN(@individualString + @delimiter) + 1, LEN(@inputString) + 1)
- END
- ELSE
- BEGIN
- SET @individualString = @inputString
- SET @individual =CONVERT(nvarchar(20), @individualString)
- insert @listOfTablesArrangementIDs(id) values(@individual)
- SET @inputString = NULL
- END
- END
- RETURN
- END
//And Now Here how you have to call the SplitString function. From any query page just run it .
- declare @listOfTablesArrangementIDs table (id nvarchar(20))
- insert into @listOfTablesArrangementIDs
- SELECT * FROM [dbo].[SplitString] ('1,Allah,asdasd' ,',')
- select * from @listOfTablesArrangementIDs
No comments:
Post a Comment