Postgresql

postgresql 中的泰語和英語

  • May 30, 2014

我在幾個表中有一個帶有泰語和英語值/字元串的 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";

引用自:https://dba.stackexchange.com/questions/66133