You can use function from Shuumi to split string into rows, and code from other question to split separated rows into columns. Then you have data in table and you can do normal select:
;WITH Split_Names (ElementID,Element, xmlname)
AS
(
SELECT ElementID,
Element,
CONVERT(XML,'<Names><name>'
+ REPLACE(Element,'|', '</name><name>') + '</name></Names>') AS xmlname
FROM [dbo].[func_Split] ('57|0|0|2|||~56|0|0|2|||~55|0|0|2|||~54|0|0|3|4|5|~53|0|0|4|||~52|0|0|4|||~51|0|0|2|||~','~')
)
SELECT Element,
xmlname.value('/Names[1]/name[1]','varchar(100)') AS ID,
xmlname.value('/Names[1]/name[2]','varchar(100)') AS Element1,
xmlname.value('/Names[1]/name[3]','varchar(100)') AS Element2,
xmlname.value('/Names[1]/name[4]','varchar(100)') AS Element3,
xmlname.value('/Names[1]/name[5]','varchar(100)') AS Element4,
xmlname.value('/Names[1]/name[6]','varchar(100)') AS Element5
INTO #tmp
FROM Split_Names
SELECT Element3 FROM #tmp WHERE ID = 54