0

터키어 대문자와 소문자가 같은 경우 DB 검색에 문제가 있습니다.터키어 문자로 검색

예를 들어, 게시물 제목이 'DENEME YAZI' 인 게시물이 있습니다.

select * from posts where title like '%deneme%'; 

나 : :이 쿼리를 실행하면

select * from posts where title like '%YAZI%'; 

을 나는 올바른 결과를 얻을하지만 실행하는 경우 :

select * from posts where title like '%yazı%'; 

그것은 어떤 기록을 반환하지 않습니다. 데이터베이스 인코딩은 tr_TR.UTF-8입니다. 정확한 단어를 입력하지 않고 정확한 결과를 얻으려면 어떻게해야합니까?

답변

0

당신은 대소 문자를 구분하지 일치하는 ILIKE을 사용해야합니다

select * from posts where title ilike '%yazı%';

그러나, 터키 지역에 따라 독특한 규칙의 추가 합병증이있다. 대문자는 'ı''I'입니다. 그러나 다른 방법은 없습니다. 'I'의 소문자는 'i'입니다 :

select upper('DENEME YAZI') like ('%' || upper('yazı') || '%'); 
:

db=# SELECT lower(upper('ı')); 
lower 
------- 
i 

당신은 LIKE 표현의 양쪽에 upper()을 적용하여 그것을 해결할 수

관련 문제