2016-12-05 2 views
2

이 질문은 Postgres doesn't search case-insensitive unicode regex포스트 그레스 기능

과 유사하지만 upper 기능이 잘 작동하지 않는 것 같습니다? 또한 서버 utf8에서 인코딩하는 것 같습니다

CentOS 6에서 webfaction private postgres 인스턴스를 사용하고 클러스터 생성시 로켈을 설정하는 방법을 모릅니다.

제발, 어떻게 고치려하는지.

+0

사용자가 알 수없는 내용 : 'a = # select upper ('утф '); 상단 ------- УТФ (1 row)' –

+0

postgres = # select version(); PostgreSQL의 gcc에서 컴파일 x86_64에 알려지지-리눅스 GNU에 9.4.10 (GCC) 4.8.5 20,150,623 ( 레드햇 4.8.5-4), 64 비트 (1 행) POSTGRES = # 선택 상부 ('утф'); upper ------- утф (1 row) –

+0

hm : /'show server_encoding;'? .. 그리고'show lc_collate;'? .. –

답변

2

변경 정렬, 같은 :

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) 

또는 당신은 당신의 데이터를 덤프하고 바로 로케일 dB로 복원 할 수 있습니다. 복원 테이블에서 오른쪽 정렬을 사용하여 테이블을 작성합니다 :

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) 
+0

한 문장으로 모든 테이블을 어떻게 처리합니까? –

+0

대단히 감사합니다 !!!!! –

+0

걱정할 필요가 없습니다. –