DECLARE @ AS VARCHAR(MAX) = 'param0,param1,param3,param4'
SELECT VALUE FROM
(
SELECT VALUE , ROW_NUMBER() OVER (ORDER BY (SELECT null)) rn FROM STRING_SPLIT(@, ',')
)x where rn = 3
GO
OR
DECLARE @str VARCHAR(100) = 'param0,param1,param3,param4';
SELECT *
FROM OPENJSON('["' + REPLACE(@str,',','","') + '"]')
-----------
Get value By position in the string:
DECLARE @str VARCHAR(100) = 'param0,param1,param3,param4';
SELECT *
FROM OPENJSON('["' + REPLACE(@str,',','","') + '"]')
WHERE [key]=2;
--------------------------
String_split altenative for string split with position:
DECLARE @dlmt NVARCHAR(10)=N',';
DECLARE @pos INT = 2;
declare @input varchar(max)= 'a,b,c';
SELECT CAST(N'<x>' + REPLACE(@input,@dlmt,N'</x><x>') + N'</x>' AS XML).value('/x[sql:variable("@pos")][1]','nvarchar(max)')