AFAIK以下所有三项测试都应返回true(t
)。它们实际上在我追加COLLATE "de_DE"
时起作用。
我在交互式数据库终端上运行它,所以不确定整理是否生效?我能否以某种方式检查哪种排序规则有效,如果是这样,在不修改(UTF-8编码)数据的情况下进行更改?
version
------------------------------------------------------------------------------------------------
PostgreSQL 9.4.13 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
=> SELECT 'Ü' ~* 'Ü';
?column?
----------
t
=> SELECT 'Ü' ~* 'ü';
?column?
----------
f
=> SELECT 'Ü' ~* '\mÜ';
?column?
----------
f
或者,有没有办法让模式匹配对变形不敏感,即让'Ü' ~*SOMETHINGHERE '\mU'
返回t
?或者我应该只将COLLATE
附加到我的所有查询调用中吗?或者我应该只运行以下内容,这实际上是不会触及数据,只查找行为和索引?
ALTER TABLE articles ALTER COLUMN title SET DATA TYPE VARCHAR(255) COLLATE "de_DE";
答案 0 :(得分:1)
如果未指定归类,则使用的默认归类是数据库归类,您可以使用SQL语句找到该归类
SHOW lc_collate;
或
SELECT current_setting('lc_collate');
要使用与默认排序规则不同的排序规则,您必须在查询中明确使用COLLATE
来指定要使用的排序规则,或者您可以按照建议使用ALTER TABLE
。
这不应该重写您的数据,也不会改变任何索引。