是否可以在oracle10g中对带有字母的数字进行排序

时间:2015-03-02 12:57:23

标签: oracle10g

我有像abc1,abc2,abcK这样的数据。排序后的结果应显示为abcK,abc1,abc2。

有没有办法实现这个目标?

2 个答案:

答案 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。因此,任何具有数字的字符串,即字母数字值将低于纯字母