2012-09-24 33 views
2

我在做一個返回VARCHAR2和其他字段的查詢。我通過這個VARCHAR2訂購了我的結果,並且遇到了一些與語言排序相關的問題,就像我在Oracle文檔中發現的那樣。例如:在Oracle上將結果排序爲ASCII

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函數,因爲它忽略除第一個字符以外的任何字符。

這樣做的最好方法是什麼?

回答

5

對於這種情況,您應該可以按照您的角色的BINARY值進行排序;

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

SQLFiddle here

+0

工作,謝謝! –