Vous pouvez essayer ceci :
DECLARE @string nvarchar(max) = '32-HC-100-10001-G03P2-N-1-1001'
SELECT REVERSE(STUFF(SUBSTRING(REVERSE(@string),CHARINDEX('-',REVERSE(@string))+1,LEN(@string)),1,CHARINDEX('-',SUBSTRING(REVERSE(@string),CHARINDEX('-',REVERSE(@string))+1,LEN(@string))),'')),
REVERSE(LEFT(SUBSTRING(REVERSE(@string),CHARINDEX('-',REVERSE(@string))+1,LEN(@string)),CHARINDEX('-',SUBSTRING(REVERSE(@string),CHARINDEX('-',REVERSE(@string)),LEN(@string)))))
Sortie :
32-HC-100-10001-G03P2-N 1
S'il s'agit toujours d'une 7e pièce, vous pouvez utiliser XML :
DECLARE @string nvarchar(max) = '32-HC-100-10001-G03P2-N-1-1001',
@xml xml
SELECT @xml = CAST('<d>'+REPLACE(@string,'-','</d><d>') +'</d>' as xml)
SELECT t.v.value('/d[1]','nvarchar(10)') + '-' +
t.v.value('/d[2]','nvarchar(10)') + '-' +
t.v.value('/d[3]','nvarchar(10)') + '-' +
t.v.value('/d[4]','nvarchar(10)') + '-' +
t.v.value('/d[5]','nvarchar(10)') + '-' +
t.v.value('/d[6]','nvarchar(10)'),
t.v.value('/d[7]','nvarchar(10)')
FROM @xml.nodes('/') as t(v)
Sortie :
32-HC-100-10001-G03P2-N 1