Db2

如何更改表/列的排序規則?

  • September 11, 2009

我知道,有一個數據庫配置參數“數據庫排序順序”用於在 db2 中設置排序規則。但由於這會影響整個數據庫並且只能在創建它時設置,我正在尋找為單個表或列設置它的可能性。或者,在 SQL 語句中設置排序規則,就像在 Microsoft SQL Server 上一樣:

SELECT * FROM table ORDER BY col1 COLLATE Latin1_General_CI_AS

這在 DB2 中可能嗎?如何?

其次,更改整個數據庫、表或查詢內的排序規則將如何影響性能?

有一個名為COLLATION_KEY_BIT的函式可以在這樣的語句中使用:

SELECT FIRSTNME, LASTNAME
FROM EMPLOYEE
ORDER BY COLLATION_KEY_BIT(LASTNAME, 'UCA400R1_LDE')

這是應該在手冊中的資訊。

我不了解 DB2,但對於其他人(MySql、PostgresSQL、SQL Server 或 Oracle),您可以使用 ALTER TABLE 來修改排序規則(或 ALTER DATABASE 來修改新表的預設排序規則)。

關於你的第二個問題:是的 - 它對速度有影響,最好不要在選擇中設置排序規則。您可以使用應該可以進行最佳 Unicode 排序的 Unicode 排序算法:即使如此,您也會發現該算法並不適用於所有語言,但從統計的角度來看,您將獲得最佳結果。

為每個使用者實施不同的排序規則可能成本太高,即使這對使用者體驗來說並不是一件壞事。

引用自:https://serverfault.com/questions/59899