Vous devez analyser les pièces et trier. L'exemple de requête crée les champs v1, v2, ...
avec les données sur lesquelles vous pouvez trier. v1
contient STD
, v2
contient le premier nombre, v3
est 1 si (T)
est présent, et v4
est le deuxième nombre. La requête externe utilise ensuite ces champs pour trier, comme:
select YourColumn
from (
select substring(YourColumn,1,3) as v1
, cast(substring(YourColumn,5,2) as int) as v2
, case when YourColumn like '%(T)%' then 1 else 0 end as v3
, cast(replace(substring(YourColumn,8,len(YourColumn)-7),'(T)','')
as int) as v4
, YourColumn
from YourTable
) sub
order by v1, v2, v3, v4
Pour vos données par exemple, cela retourne:
v1 v2 v3 v4 YourColumn
STD 0 0 1 STD-00-1
STD 0 0 2 STD-00-2
STD 0 0 10 STD-00-10
STD 0 1 1 STD-00-1(T)
STD 0 1 2 STD-00-2(T)
STD 0 1 10 STD-00-10(T)
STD 5 0 1 STD-05-1
STD 5 0 2 STD-05-2
STD 5 0 10 STD-05-10
STD 5 1 1 STD-05-1(T)
STD 5 1 2 STD-05-2(T)
STD 5 1 10 STD-05-10(T)
WIP 0 0 1 WIP-00-1
WIP 0 1 1 WIP-00-1(T)
quelques réglages supplémentaires pourraient être nécessaires.
Cela mettra 'STD-00-10' avant' STD-00-2' – Quassnoi