我有像abc1,abc2,abcK这样的数据。排序后的结果应显示为abcK,abc1,abc2。
有没有办法实现这个目标?
答案 0 :(得分:1)
指定其他整理顺序,方法是使用ALTER SESSION
更改整个会话的整理顺序,或使用NLSSORT更改单个ORDER BY的整理顺序。例如,
SELECT *
FROM YOUR_TABLE
ORDER BY NLSSORT(YOUR_COLUMN, 'NLS_SORT=WEST_EUROPEAN')
将在数字前订购信件。 SQLFiddle here
分享并享受。
答案 1 :(得分:0)
您可以在 ORDER BY 子句中使用 CASE 表达式。
例如,
order by case when translate(column,'x0123456789','x') is null then 2 else 1 end, column;
TRANSLATE 会将纯字符串评估为 NULL 。因此,案例将返回2,否则返回所有其他,1。因此,任何具有数字的字符串,即字母数字值将低于纯字母。