oracle10g中是否可以用字母对数字进行排序

问题描述 投票:0回答:2

我有 abc1、abc2、abcK 等数据。排序后的结果应显示为 abcK、abc1、abc2。

有什么办法可以实现这个目标吗?

oracle10g
2个回答
1
投票

指定不同的整理顺序,可以使用

ALTER SESSION
更改整个会话的整理顺序,或使用 NLSSORT 更改单个 ORDER BY 的整理顺序。例如,

SELECT *
  FROM YOUR_TABLE
  ORDER BY NLSSORT(YOUR_COLUMN, 'NLS_SORT=WEST_EUROPEAN')

将字母排在数字之前。 SQLFiddle 在这里


0
投票

您可以在 ORDER BY 子句中使用 CASE 表达式。

例如,

订购依据
  当 translate(column,'x0123456789','x') 为 null 时,则为 2
       否则 1
  结束,列;

TRANSLATE 会将纯字符串评估为 NULL。因此,该情况将返回 2,否则返回 1。因此,任何具有数字的字符串,即 alphanumeric 值将低于纯 alphabets

© www.soinside.com 2019 - 2024. All rights reserved.