这些是要排序的字段 (crane_no) 值
QC11
QC10
QC9
我尝试了以下查询:
select * from table order by crane_no DESC
Run Code Online (Sandbox Code Playgroud)
但查询结果没有按顺序给出,因为该字段混合了星号和数字(例如:QC12)。我得到上述查询的以下结果:
QC9
QC11
QC10
我希望结果按顺序排列(QC9、QC10、QC11)。谢谢
如果数据不是很大,我会使用正则表达式 order by 子句:
select
cran_no
from your_table
order by
regexp_substr(cran_no, '^\D*') nulls first,
to_number(regexp_substr(cran_no, '\d+'))
Run Code Online (Sandbox Code Playgroud)
这会查找字符串中的数字,因此“QCC20”、“DCDS90”等行已正确排序;它还负责处理空值。