Hi Sir,
I can get this 2 string into array:-
select * from [dbo].fn_split_string_to_column
select column_id,[value]=replace([value],'__',',') from [dbo].fn_split_string_to_column'),',')
ALTER FUNCTION [dbo].[fn_split_string_to_column] (
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @out_put TABLE (
[column_id] INT IDENTITY(1, 1) NOT NULL,
[value] NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @value NVARCHAR(MAX),
@pos INT = 0,
@len INT = 0
SET @string = CASE
WHEN RIGHT(@string, 1) != @delimiter
THEN @string + @delimiter
ELSE @string
END
WHILE CHARINDEX(@delimiter, @string, @pos + 1) > 0
BEGIN
SET @len = CHARINDEX(@delimiter, @string, @pos + 1) - @pos
SET @value = SUBSTRING(@string, @pos, @len)
INSERT INTO @out_put ([value])
SELECT LTRIM(RTRIM(@value)) AS [column]
SET @pos = CHARINDEX(@delimiter, @string, @pos + @len) + 1
END
RETURN
END
Now have to merge 2 based on column_id better solution?
I manage to did it using this method, but is there any better way to do it using Merge?
select @colsUnpivot = Replace(@colsunpivot,'[Brand],[ProductCode],[Description],[PriceType],[ReferenceSet],','')
select @colsUnpivot2 = Replace(Replace(Replace(@colsunpivot,'[Brand],[ProductCode],[Description],[PriceType],[ReferenceSet],',''),'[','coalesce('),']',',-1)')
SELECT @colsUnpivot3 = COALESCE(@colsUnpivot3 + ', ', '') + val
FROM (
select val =A.value+'='+B.value from
(
select * from [dbo].fn_split_string_to_column
)A join (
select column_id,[value]=replace([value],'__',',') from [dbo].fn_split_string_to_column'),',')
) B on A.column_Id = b.column_id
)Result
Please advise
Thanks
Regards,
Micheale