gpt4 book ai didi

sql - Postgres 函数 upper 不适用于西里尔字母(版本 9.4)

转载 作者:行者123 更新时间:2023-11-29 11:42:43 25 4
gpt4 key购买 nike

这个问题类似于Postgres doesn't search case-insensitive unicode regex

但是 upper 函数似乎也不能正常工作?此外,服务器上的编码似乎是 utf8

我在 CentOS 6 上使用 webfaction private postgres 实例,不知道如何在创建集群时设置语言环境。

求助,如何解决。

最佳答案

更改排序规则,例如:

b=#  select upper('утф'  COLLATE "C"), upper('утф'  COLLATE "en_US");
upper | upper
-------+-------
утф | УТФ
(1 row)

更改默认值,如:

b=# create table clt (a text COLLATE "C");
CREATE TABLE
b=# insert into clt select 'утф';
INSERT 0 1
b=# select upper(a) from clt;
upper
-------
утф
(1 row)

b=# alter table clt alter column a set data type text COLLATE "en_US";
ALTER TABLE
b=# select upper(a) from clt;
upper
-------
УТФ
(1 row)

或者,您可以转储数据并将其恢复到具有正确语言环境的数据库。恢复表将使用正确的排序规则构建:

b=# CREATE DATABASE not_c ENCODING 'UTF8'
lc_ctype='en_US.utf-8'
lc_collate='en_US.UTF-8' TEMPLATE=template0;
CREATE DATABASE
b=# \c not_c
You are now connected to database "not_c" as user "postgres".
not_c=# create table clt (a text);
CREATE TABLE
not_c=# insert into clt select 'утф';
INSERT 0 1
not_c=# select upper(a) from clt;
upper
-------
УТФ
(1 row)

关于sql - Postgres 函数 upper 不适用于西里尔字母(版本 9.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com