2014-10-10 215 views
-1

我有一個DB2數據庫,我試圖按字母順序排序。是,DB2似乎問題並不在排序過程中要考慮的= A,因此,我得到的結果是這樣的:DB2 - 按字母順序排序

ABCT ABCG

我想:

A AB BC CG牛逼

我不知道需要做什麼特別的事情?

在SQL中,我們有COLLATE NOCASE ASC。任何人都可以告訴我什麼是在db2中的替代方案。

+1

不熟悉DB2,但在Oracle SQL中,我會按照上層(CITY_NAME)的城市順序執行select *操作;其中upper是將所有小寫字符轉換爲大寫字母的內部函數。既然它只是按順序而已,它不會影響返回的內容。 – 2014-10-10 11:34:39

+0

'在** SQL **中,我們有COLLATE NOCASE ASC.'您是否使用SQL來訪問您的DB2數據庫?什麼是DB2版本?它安裝了什麼平臺? – user2338816 2014-10-10 11:49:46

+0

不是我使用SQL。而是我正在使用DB2 9.5 – 2014-10-10 12:01:59

回答

0

如果這是一次性問題(即只有一個查詢),那麼@Paul Stearns建議的解決方案(使用UPPER())將起作用。

但是,如果這是一個會影響應用程序中所有查詢的問題,則應考慮適當的collating sequence應該適用於您的數據庫。默認的整理順序基於代碼點進行排序,這就是爲什麼您會看到您看到的排序順序。

不幸的是,您無法更改數據庫的整理順序;它在創建數據庫時設置。因此,一旦確定了正確的排序順序,您需要創建一個新的數據庫,並將現有數據庫中的數據複製到新的數據庫中。

這樣做可能會很痛苦(尤其是如果你有一個非常大的數據庫),但它會爲你節省很多麻煩(以及在很多時候依賴於UPPER()會產生性能問題) 。

+0

謝謝伊恩。它已經解決了我的問題:) – 2014-10-11 13:42:14

+0

如果是這樣,請接受答案。 – 2014-10-14 22:41:58