I have tries the following :
SELECT blokno
FROM Blokke
ORDER BY LEFT(blokno, PATINDEX('%[0-9]%', blokno)-1),
CONVERT(INT, SUBSTRING(blokno, PATINDEX('%[0-9]%', blokno), LEN(blokno)))
But am getting an error (My guess is that I am not accounting for the hyphen?)
create table #mightygedion(blokno varchar(50))
insert into #mightygedion
select 'Blokno' blokno union
select '3' union
select '2' union
select '1' union
select '5-BOP' union
select '3-ANW' union
select '11' union
select '4-BLY' union
select '23'
select blokno,
substring( reverse(blokno), PATINDEX('%-%',reverse(blokno)) + 1, len(blokno)),
case
when isnumeric( substring( reverse(blokno), PATINDEX('%-%',reverse(blokno)) + 1, len(blokno)) ) = 1 then
cast(substring( reverse(blokno), PATINDEX('%-%',reverse(blokno)) + 1, len(blokno)) as int)
else -9999
end as Sorter
from #mightygedion
order by Sorter
drop table #mightygedion
SELECT *
FROM #mightygedion
CROSS APPLY (
SELECT PATINDEX('%[^0-9]%', blokno + '.') - 1 AS blokno_first_nonnum
) AS assign_alias_names
ORDER BY CAST(LEFT(blokno, blokno_first_nonnum) AS int),
SUBSTRING(blokno, blokno_first_nonnum + 1, 50)