仅按字符串的数字部分排序

Ber*_*eSF 6 sql sql-server-2008

我有一个名为Number这个数据填充的列(列是nchar):

1
2
1091
3
20
2B
Run Code Online (Sandbox Code Playgroud)

我想要一个给出这个顺序的select语句:

1
2
2B
3
20
1091
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?谢谢大家的帮助

(编者)

Aar*_*and 18

在发现第一个非数字的位置后,您可以通过转换为数字来执行一些技巧.在末尾附加随机字符使得即使原始字符串不包含字母,它也会将所有字符串视为相同.

SELECT [Number] FROM dbo.TableName 
ORDER BY CONVERT(INT, LEFT(Number, PATINDEX('%[^0-9]%', Number + 'z')-1));
Run Code Online (Sandbox Code Playgroud)