

# 管理排序规则
<a name="collation.managing"></a>

ICU 库提供排序规则版本跟踪功能，以确保当新版本的 ICU 可用时，依赖排序规则的索引可以重新建立索引。要查看当前数据库是否有需要刷新的排序规则，可以在使用 `psql` 或 `pgAdmin` 进行连接后使用以下查询：

```
SELECT pg_describe_object(refclassid, refobjid,
    refobjsubid) AS "Collation", 
    pg_describe_object(classid, objid, objsubid) AS "Object" 
    FROM pg_depend d JOIN pg_collation c ON refclassid = 'pg_collation'::regclass
    AND refobjid = c.oid WHERE c.collversion <> pg_collation_actual_version(c.oid) 
    ORDER BY 1, 2;
```

此查询返回如下输出：

```
 Collation | Object
-----------+--------
(0 rows)
```

在此示例中，不需要更新排序规则。

要获取 Babelfish 数据库中预定义排序规则的列表，您可以将 `psql` 或 `pgAdmin` 用于以下查询：

```
SELECT * FROM pg_collation;
```

预定义的排序规则存储在 `sys.fn_helpcollations` 表中。您可以使用以下命令显示有关排序规则的信息（例如其 lcid、样式和排序规则标志）。要使用 `sqlcmd` 获取所有排序规则的列表，请连接到 T-SQL 端口（原定设置为 1433），然后运行以下查询：

```
1> :setvar SQLCMDMAXVARTYPEWIDTH 40
2> :setvar SQLCMDMAXFIXEDTYPEWIDTH 40
3> SELECT * FROM fn_helpcollations()
4> GO
name                                     description
---------------------------------------- ----------------------------------------
arabic_cs_as                             Arabic, case-sensitive, accent-sensitive
arabic_ci_ai                             Arabic, case-insensitive, accent-insensi
arabic_ci_as                             Arabic, case-insensitive, accent-sensiti
bbf_unicode_bin2                         Unicode-General, case-sensitive, accent-
bbf_unicode_cp1250_ci_ai                 Default locale, code page 1250, case-ins
bbf_unicode_cp1250_ci_as                 Default locale, code page 1250, case-ins
bbf_unicode_cp1250_cs_ai                 Default locale, code page 1250, case-sen
bbf_unicode_cp1250_cs_as                 Default locale, code page 1250, case-sen
bbf_unicode_pref_cp1250_cs_as            Default locale, code page 1250, case-sen
bbf_unicode_cp1251_ci_ai                 Default locale, code page 1251, case-ins
bbf_unicode_cp1251_ci_as                 Default locale, code page 1251, case-ins
bbf_unicode_cp1254_ci_ai                 Default locale, code page 1254, case-ins
...
(124 rows affected)
```

示例中显示的第 1 行和第 2 行仅出于文档可读性目的而缩小了输出范围。

```
1> SELECT SERVERPROPERTY('COLLATION')
2> GO
serverproperty
---------------------------------------------------------------------------
sql_latin1_general_cp1_ci_as

(1 rows affected)
1>
```