DECLARE @NumberTable TABLE( ItemNumber VARCHAR(50))INSERT @NumberTableSELECT 'ABC-1702-XYZ' ItemNumber UNION ALLSELECT 'ABC-1727-XYZ' UNION ALLSELECT 'ABC-1729-XYZ' UNION ALLSELECT 'ABC-895-XYZ' UNION ALLSELECT 'ABC-2119-XYZ' UNION ALLSELECT 'ABC-1746-XYZ' UNION ALLSELECT 'ABC-900-XYZ' UNION ALLSELECT 'ABC-2215-XYZ' UNION ALLSELECT 'ABC-645-XYZ' UNION ALLSELECT 'ABC-1783-XYZ' UNION ALLSELECT 'ABC-2193-XYZ' UNION ALLSELECT 'ABC-830-XYZ' UNION ALLSELECT 'ABC-646-XYZ' UNION ALLSELECT 'ABC-796-XYZ'select * from @NumberTableorder by ItemNumber ASC
select * from @NumberTableorder by Convert(numeric,REPLACE(REPLACE(ItemNumber,'ABC-',''),'-xyz','')) asc
SELECT ItemNumber FROM @NumberTable ORDER BY CAST(SUBSTRING(SUBSTRING(ItemNumber,CHARINDEX('-',ItemNumber,1) + 1,LEN(ItemNumber)),1,CHARINDEX('-',SUBSTRING(ItemNumber,CHARINDEX('-',ItemNumber,1)+1,LEN(ItemNumber)),1)-1) AS INT)
DECLARE @NumberTable TABLE( ItemNumber VARCHAR(50))INSERT @NumberTableSELECT 'ABC-1702-XYZ' ItemNumber UNION ALLSELECT 'ABC-1727-XYZ' UNION ALLSELECT 'ABC-1729-XYZ' UNION ALLSELECT 'ABC-895-XYZ' UNION ALLSELECT 'ABC-2119-XYZ' UNION ALLSELECT 'ABC-1746-XYZqqqq' UNION ALLSELECT 'ABC-900-dfdfdfXYZ' UNION ALLSELECT 'ABCasasa-2215-XYZabc' UNION ALLSELECT 'ABC-64533333-XYZ' UNION ALLSELECT 'ABC121-1783-333XYZ' UNION ALLSELECT 'ABC-2193-XYZ' UNION ALLSELECT 'ABC-830-XYZ' UNION ALLSELECT 'ABC-646-XYZ' UNION ALLSELECT 'ABC-796-XYZ'select * from @NumberTableorder by cast (SUBSTRING( ItemNumber, CHARINDEX('-', ItemNumber) + 1, LEN(ItemNumber) - CHARINDEX('-', ItemNumber) - CHARINDEX('-', REVERSE(ItemNumber))) as int)
SELECT *FROM @NumberTableORDER BY RIGHT('000' + REPLACE( SUBSTRING(ItemNumber, PATINDEX('%[0-9]%', ItemNumber), 4), '-', ''), 4)