如何编写SQL语句来安排此列
columnA
-------
10A
11C
12V
10D
8F
8R
9C
以便按此顺序返回结果集
columnA
-------
8F
8R
9C
10A
10D
11C
12V
(以数字然后按字母顺序排列)?
我试过这句话:
Select columnA from tblStudents order by columnA
但它没有奏效。
答案 0 :(得分:4)
您必须将字符串拆分为数字部分和文本部分,并将数字部分转换为实际数字。
我不知道你正在使用哪种SQL方言;这适用于Microsoft SQL Server:
select columnA
from tblStudents
order by
convert(int, substring(columnA, 1, patindex('%[^0-9]%') - 1)),
substring(columnA, patindex('%[^0-9]%'), 1000)
patindex('%[^0-9]%')
会在字符串中找到第一个非数字,因此第一个substring
获取该点的字符,第二个substring
从该点获取字符到字符串的末尾。