Postgresql
postgresql 中的泰語和英語
我在幾個表中有一個帶有泰語和英語值/字元串的 postgresql 數據庫。
目前我有以下設置
| Encoding | Collate | Ctype | | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
如果我按具有泰語值的列排序,則排序順序不正確。
我應該更改哪些設置才能使 postgresql 正確排序?
在 PostgreSQL 9.1 和更高版本上,您可以
COLLATE
在操作上使用限定符來覆蓋數據庫的預設排序規則。有關排序規則支持的資訊,請參閱手冊。例如
SELECT a, b FROM mytable ORDER BY c COLLATE 'th_TH.UTF-8';
請注意,PostgreSQL 不能混合不同的排序規則,使用基於檢測到的語言的動態排序規則。它不是那樣工作的。
在以前的版本中,您必須使用單個數據庫範圍的排序規則。因此,您必須轉儲數據庫
CREATE DATABASE ... ENCODING 'UTF-8' LC_COLLATE 'th_TH.UTF-8'
,然後重新載入。
由於數據庫同時具有英語和泰語,我決定更改列的排序規則。
ALTER TABLE books ALTER thai_title TYPE varchar(255) COLLATE "C";