我正在执行一个返回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函数,因为它忽略除第一个字符之外的任何字符。
最好的方法是什么?
答案 0 :(得分:5)
对于这种情况,您应该只能按字符的BINARY
值排序;
SELECT id, my_varchar2
FROM my_table
ORDER BY NLSSORT(MY_VARCHAR2, 'NLS_SORT = BINARY')
SQLFiddle here。