Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
Kalaiselvan
Posting Yak Master
112 Posts |
Posted - 2012-06-27 : 01:08:28
|
Hi, Need Query to convert Comma separated values to Table. Were as my CSV values will be separated by Pipe symbol and comma with n numbers. It must be converted to two columns.Ex: Var='1|Row1,2|Row2,3|Row3,...,n|RownOutput:[COLUMN1] [COLUMN2] 1 Row1 2 Row2 3 Row3 . . . . n RownHelp me to fix this one with Query.Regards,Kalai |
|
Manigandan
Starting Member
4 Posts |
Posted - 2012-06-27 : 03:20:33
|
IF EXISTS (SELECT * FROM Sys.Objects WHERE Name LIKE 'fnTableFromCSV' AND Type = 'TF') DROP FUNCTION fnTableFromCSVGO-- =============================================-- Author: <Mani>-- Created Date: <Nov 29 2010>-- Description: This function using for split the spcified string-- =============================================CREATE FUNCTION [dbo].[fnTableFromCSV]( @theString VARCHAR(MAX) , @separator CHAR(1))RETURNS @Items TABLE (Items VARCHAR(MAX))ASBEGIN DECLARE @seppos INT SET @theString = @theString + @separator WHILE PATINDEX('%' + @separator + '%' , @theString) <> 0 BEGIN SELECT @seppos = PATINDEX('%' + @separator + '%' , @theString) INSERT INTO @Items SELECT LEFT(@theString, @seppos - 1) SELECT @theString = STUFF(@theString, 1, @seppos, '') END RETURNENDGODECLARE @Var VARCHAR(1000) = '1|Row1,2|Row2,3|Row3'SELECT LEFT(Items,CHARINDEX(',',Items)-1) AS COLUMN1 , SUBSTRING(Items,CHARINDEX(',',Items)+1, LEN(Items)) AS COLUMN2FROM [dbo].[fnTableFromCSV](REPLACE(REPLACE(REPLACE(@Var,'|',';'),',','|'),';',','),'|')GO--Output:--[COLUMN1] [COLUMN2]--1 Row1--2 Row2--3 Row3 |
 |
|
|
|
|
|
|