2017-10-24 6 views
0

AFAIK 다음 세 가지 테스트가 모두 true (t)를 반환해야합니다. 그들은 실제로 COLLATE "de_DE"을 추가 할 때 작동합니다.Umlauts에서 PostgreSQL 패턴이 일치합니다.

대화 형 데이터베이스 터미널에서 실행 중이므로 데이터 정렬이 적용되지 않았는지 확인하십시오. 어떻게 데이터 정렬이 유효한지 어떻게 확인할 수 있습니까? 그렇다면 (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"; 

답변

1

데이터 정렬이 지정되지 않은 경우 사용되는 기본 데이터 정렬은 다른 정렬을 사용하려면 SQL 문

SHOW lc_collate; 

또는

SELECT current_setting('lc_collate'); 

으로 찾을 수있는 데이터베이스 데이터 정렬입니다 기본 데이터 정렬을 사용하려면 검색어에 COLLATE을 명시 적으로 사용해야하며 사용할 데이터 정렬을 지정하거나 ALTER TABLE을 사용하는 것이 좋습니다.

데이터를 다시 작성하면 안되며 인덱스가 변경되지 않습니다.