2016-06-03 2 views
4

파이어 버드 2.5에 이상한 문제가 있습니다.파이어 버드 정렬 순서

내 데이터베이스에는 기본 charset = utf8이 있습니다.

CREATE TABLE PATIENTEN (
    P_NNAME  VARCHAR(25) DEFAULT '' NOT NULL COLLATE UNICODE_CI, 

내가 정렬 사방에 일을 기대 :

나는 patienten에 테이블을 열 p_nname 있습니다. WHERE 및 ORDER BY 절을 의미합니다.

내가 가지고있는 것은 WHERE에서 일할 데이터 정렬입니다. 아래의 두 가지 쿼리를 통해 비슷한 결과를 얻을 수 있습니다.

select * from patienten where p_nname='adler' 
select * from patienten where p_nname='ADler' 

문제는 ORDER BY 절이 예상대로 작동하지 않습니다.

이 SQL은 열에 UNICODE_CI 데이터 정렬이없는 것처럼 작동합니다.

select * from patienten order by p_nname collate unicode_ci 

ORDER BY 절에 COLLATE 플래그를 생략 할 수있는 방법이 있나요 :

select * from patienten order by p_nname 

내가 그렇게 쓸 필요가 좋은 정렬에 필요한 결과를 얻으려면?

+0

버그와 같습니다. 물론 ORDER BY는 열의 데이터 정렬에 따라 정렬됩니다. – jarlh

+0

@jarlh 나는 똑같은 말을하지만 나는 Firebird의 도사가 아니다. – mad

+0

나는 그것을 결코 사용하지 않았다. 하지만이 경우에는 ANSI/ISO SQL 표준 사양을 충분히 알고 있습니다. – jarlh

답변

1

documentation 상태, 참으로 벌레처럼 보이는 :

키워드 COLLATE는이 열에 대한 일반적인 것과 다른 데이터 정렬을 필요로하는 경우 문자열 열 에 대한 정렬 순서를 지정합니다. 정상적인 조합 순서는 데이터베이스 문자 집합 에 대한 기본 순서이거나 열 정의에 명시 적으로 설정된 순서입니다.

그래서 ORDER BY의 collate 절을 지정하지 않아도 작동합니다. 나는 당신이 버그 보고서를 제출하는 것이 좋습니다.