4

我正在做一个返回 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 函数,因为它会忽略除第一个字符之外的任何字符。

最好的方法是什么?

4

1 回答 1

6

在这种情况下,您应该能够按BINARY角色的价值进行排序;

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

SQLFiddle在这里

于 2012-09-24T17:42:29.843 回答