2014-10-10 2 views
-1

나는 알파벳순으로 정렬하려고하는 DB2 데이터베이스가 있습니다.DB2 - 알파벳 순으로 정렬

AB BC CG T

을 :

ABCT

내가 싶어 abcg : 문제는, DB2 따라서이 같은 결과를 얻을, 정렬시 = A를 고려하지 않는 것입니다

내가 모르는 특별한 일을해야합니까?

SQL에서는 COLLATE NOCASE ASC를 사용합니다. 누구든지 plz DB2에 대한 대안이 뭔지 말해 줄래?

+1

DB2에는 익숙하지 않지만 Oracle SQL에서는 select by *를 도시 별 오름차순 (CITY_NAME)에서 수행합니다. 여기서 upper는 모든 소문자를 대문자로 변환하는 내장 함수입니다. 그것만이 순서에 있기 때문에 반환되는 것에 영향을주지 않습니다. –

+0

'** SQL **에서는 COLLATE NOCASE ASC가 있습니다 .' SQL을 사용하여 DB2 데이터베이스에 액세스하고 있습니까? 어떤 DB2 버전입니까? 어떤 플랫폼에 설치되어 있습니까? – user2338816

+0

아니요, SQL을 사용하지 않습니다. 대신 DB2 9.5를 사용합니다. –

답변

0

한 번만 문제가 발생하면 (즉 단일 쿼리로) @Paul Stearns가 권장하는 솔루션 (UPPER() 사용)이 작동합니다.

그러나이 문제가 응용 프로그램의 모든 쿼리에 영향을 미치는 경우 데이터베이스에 적합한 collating sequence이 무엇인지 고려해야합니다. 기본 조합 순서는 코드 포인트를 기준으로 정렬되므로 표시되는 정렬 순서가 표시됩니다.

불행히도 데이터베이스의 조합 순서는 변경할 수 없습니다. 데이터베이스가 생성 될 때 설정됩니다. 따라서 올바른 조합 시퀀스가 ​​무엇인지 결정한 후에는 새 데이터베이스를 작성하고 기존 데이터베이스의 데이터를 새 데이터베이스로 복사해야합니다.

이 작업을 수행하는 것이 고통 스러울 수 있지만 (특히 데이터베이스가 매우 큰 경우) 고통을 줄 수 있지만 나중에 많은 실수 (많은 시간과 UPPER()에 의존하여 발생할 수있는 성능 문제)가 줄어 듭니다. .

+0

감사합니다. Ian. 내 문제가 해결되었습니다 :) –

+0

그렇다면 대답을 수락하십시오. –

관련 문제