2017-10-24 1 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을 사용하는 것이 좋습니다.

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

관련 문제