The string contains set of records and each record is separated by Pipe delimiter and column values are separated by comma delimiter. For example, we have a string such as 'UTTAM,HYD,1|GOVIND,TNL,2|KIRAN,GNT,3'. After inserting the records into the table, the output will be like the following:

output

I have written a stored procedure which will take 3 inputs, one is string of records, 2nd one is Record delimiter, and 3rd one is column value delimiter. Here we have choice to pass different delimiters for record separation and column value separation.

  1. CREATE PROCEDURE [DBO].[GOVIND_TOKENIZESTRINGTOTABLE]
  2. (
  3. @STR VARCHAR(500),@DELIM1 VARCHAR(10),@DELIM2 VARCHAR(10)
  4. )
  5. AS
  6. BEGIN
  7. IF OBJECT_ID('TempDb..#TEMP') IS NOT NULL
  8. DROP TABLE #TEMP
  9. CREATE TABLE #TEMP( NAME VARCHAR(50),
  10. ADDRESS VARCHAR(50),
  11. STATION INT
  12. )
  13. DECLARE @SUBSTR VARCHAR(50)
  14. SET @SUBSTR=''
  15. WHILE(CHARINDEX(@DELIM1,@STR)!=0)
  16. BEGIN
  17. SELECT @SUBSTR=SUBSTRING(@STR,1,CHARINDEX(@DELIM1,@STR)-1)
  18. SELECT @STR=SUBSTRING(@STR,CHARINDEX(@DELIM1,@STR)+1,LEN(@STR))
  19. DECLARE @VAL1 VARCHAR(50)
  20. SELECT @VAL1=SUBSTRING(@SUBSTR,1,CHARINDEX(@DELIM2,@SUBSTR)-1)
  21. SELECT @SUBSTR=SUBSTRING(@SUBSTR,CHARINDEX(@DELIM2,@SUBSTR)+1,LEN(@SUBSTR))
  22. DECLARE @VAL2 VARCHAR(50)
  23. SELECT @VAL2=SUBSTRING(@SUBSTR,1,CHARINDEX(@DELIM2,@SUBSTR)-1)
  24. SELECT @SUBSTR=SUBSTRING(@SUBSTR,CHARINDEX(@DELIM2,@SUBSTR)+1,LEN(@SUBSTR))
  25. DECLARE @VAL3 VARCHAR(10)
  26. SET @VAL3=@SUBSTR
  27. INSERT INTO #TEMP VALUES(@VAL1,@VAL2,@VAL3)
  28. END
  29. IF @STR IS NOT NULL
  30. BEGIN
  31. SELECT @VAL1=SUBSTRING(@STR,1,CHARINDEX(@DELIM2,@STR)-1)
  32. SELECT @STR=SUBSTRING(@STR,CHARINDEX(@DELIM2,@STR)+1,LEN(@STR))
  33. SELECT @VAL2=SUBSTRING(@STR,1,CHARINDEX(@DELIM2,@STR)-1)
  34. SELECT @STR=SUBSTRING(@STR,CHARINDEX(@DELIM2,@STR)+1,LEN(@STR))
  35. SET @VAL3=@STR
  36. INSERT INTO #TEMP VALUES(@VAL1,@VAL2,@VAL3)
  37. END
  38. SELECT * FROM #TEMP
  39. END
Execution of Stored Procedure:
  1. EXEC DBO.GOVIND_TOKENIZESTRINGTOTABLE 'UTTAM ,HYD,1|GOVIND,TNL,2|KIRAN,GNT,3','|',','
Result:

result