How to split column value into 3 separate values.
Using simple function you can achieve these
Declare @column varchar(100) = 'AB12-23PP-tKK%IU'
Select @column,
PARSENAME(REPLACE(@column,'-','.'),3)'Second',
PARSENAME(REPLACE(@column,'-','.'),2)'Third',
PARSENAME(REPLACE(@column,'-','.'),1)'Fourth'
If you want to create function
CREATE FUNCTION dbo.splitValue(@string VARCHAR(MAX), @delim CHAR(1))
RETURNS @result TABLE (id INT IDENTITY, value VARCHAR(MAX))
AS
BEGIN
WHILE CHARINDEX(@delim,@string) > 0
BEGIN
INSERT INTO @result (value) VALUES (LEFT(@string,CHARINDEX(@delim,@string)-1))
SET @string = RIGHT(@string,LEN(@string)-CHARINDEX(@delim,@string))
END
INSERT INTO @result (value) VALUES (@string)
RETURN
END
GO
DECLARE @table TABLE (value VARCHAR(20))
INSERT INTO @table VALUES('AB12-23PP-tKK%IU')
INSERT INTO @table VALUES('XYz-PrP-Hind')
SELECT *
FROM (
SELECT t.*, x.id, x.value as stringValue
FROM @table t
CROSS APPLY dbo.splitValue(value,'-') x
) s
PIVOT( max(stringValue) for id in ([1],[2],[3])) pv