sorting von SQL mit substring auf string

Ich habe die data wie folgt:

CODE_VD N_10_19_xxx N_0_3_xxx N_121_131_xxx N_100_120_xxx N_80_90_xxx N_20_29_xxx 

wie du sehen kannst Ich muss nur die erste Nummer nach N_ sortieren, ich weiß nicht wie kann ich diese Nummer bekommen?

Ich habe versucht mit susfening (CODE_VD, 2,3) aber nicht genau das, was ich erwartet hatte.

Ich möchte das bekommen:

 CODE_VD N_0_3_xxx N_10_19_xxx N_20_29_xxx N_80_90_xxx N_100_120_xxx N_121_131_xxx 

wie kann ich das machen ?

 DECLARE @MyTable TABLE ( CODE_VD VARCHAR(20) ) INSERT INTO @MyTable ( CODE_VD ) VALUES ('N_10_19_xxx'), ('N_0_3_xxx'), ('N_121_131_xxx'), ('N_100_120_xxx'), ('N_80_90_xxx'), ('N_20_29_xxx'); SELECT * FROM ( SELECT *, CONVERT(INT, SUBSTRING(mt.CODE_VD, 3, CHARINDEX('_', mt.CODE_VD, 3) - 3)) ConvCol FROM @MyTable mt ) mt ORDER BY mt.ConvCol 

Ich habe in int umgewandelt, um die Art richtig zu ordnen, weil 100> 20

 SELECT SUBSTRING(CODE_VD,3, CHARINDEX('_',CODE_VD, 3)-3) 
 declare @t Table (CODE_VD VARCHAR(MAX)) INSERT INTO @t (CODE_VD)VALUES ('N_10_19_xxx') INSERT INTO @t (CODE_VD)VALUES ('N_0_3_xxx') INSERT INTO @t (CODE_VD)VALUES ('N_121_131_xxx') INSERT INTO @t (CODE_VD)VALUES ('N_100_120_xxx') ;WITH sorted AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY SUBSTRING(CODE_VD,3, CHARINDEX('_',CODE_VD, 3)-3) ORDER BY CODE_VD) AS sequence_id FROM @t ) SELECT CODE_VD FROM sorted WHERE sequence_id = 1