在Oracle上将结果排序为ASCII

时间:2012-09-24 17:31:47

标签: oracle sorting ascii

我正在执行一个返回VARCHAR2和其他一些字段的查询。正如我在Oracle文档中发现的那样,我正在通过此VARCHAR2对结果进行排序,并且遇到与语言排序相关的一些问题。例如:

SELECT id, my_varchar2 from my_table ORDER BY MY_VARCHAR2;

将返回:

ID     MY_VARCHAR2
------ -----------
 3648  A
 3649  B
 6504  C
 7317  D
 3647  0

我需要它返回字符串“0”作为此序列的第一个元素,因为它将比较ASCII值。该字符串可以有多个字符,因此我不能使用ascii函数,因为它忽略除第一个字符之外的任何字符。

最好的方法是什么?

1 个答案:

答案 0 :(得分:5)

对于这种情况,您应该只能按字符的BINARY值排序;

SELECT id, my_varchar2 
FROM my_table 
ORDER BY NLSSORT(MY_VARCHAR2, 'NLS_SORT = BINARY')

SQLFiddle here