我有 abc1、abc2、abcK 等数据。排序后的结果应显示为 abcK、abc1、abc2。
有什么办法可以实现这个目标吗?
指定不同的整理顺序,可以使用
ALTER SESSION
更改整个会话的整理顺序,或使用 NLSSORT 更改单个 ORDER BY 的整理顺序。例如,
SELECT *
FROM YOUR_TABLE
ORDER BY NLSSORT(YOUR_COLUMN, 'NLS_SORT=WEST_EUROPEAN')
将字母排在数字之前。 SQLFiddle 在这里
您可以在 ORDER BY 子句中使用 CASE 表达式。
例如,
订购依据 当 translate(column,'x0123456789','x') 为 null 时,则为 2 否则 1 结束,列;
TRANSLATE 会将纯字符串评估为 NULL。因此,该情况将返回 2,否则返回 1。因此,任何具有数字的字符串,即 alphanumeric 值将低于纯 alphabets。