2012-10-17 6 views
0

데이터베이스 테이블에 데이터가 너무 커서 데이터 ID (기본 키)를 기반으로 데이터를 정렬하려고합니다. 키 컬럼의 데이터가 될 수있다 :테이블 데이터 정렬 문제

001/2011, 
002/2011, 
001/2012 

내가 'order by id이'는 그러나

001/2011, 
001/2012, 
002/2011 

같은 행, 내가 무엇을 찾고 있어요 것은 정렬 사용할 때

001/2011, 
002/2011, 
001/2012 

id 열의 데이터 유형은 varchar(50)입니다. 이러한 유형의 데이터를 정렬하는 데 사용해야하는 특별한 SQL 함수가 있습니까? 올해 처음 와서 순서/월/일 - 중 - 년 후 오도록

답변

3
ORDER BY RIGHT(ID,4)+LEFT(ID,3) 

이것은 VARCHAR 데이터를 정렬합니다.

데이터에 다른 형식이있는 경우 같은 줄을 생각해보십시오. SUBSTRING을 사용하여 문자열을 이동하십시오. LEFT 및 RIGHT는 단지 2 개의 특정 버전입니다.

+1

매우 까다 롭긴하지만 개인적으로'+'를','로 대체했습니다. 그리고/또는'/'의 위치를 ​​검사하여 이동시킵니다. ;) * [+ 1 여전히 작동하기 때문에] * – MatBailie

+1

'그리고/또는 움직이는 위치를 확인하십시오 .' 그 나선형을 추락시키지 않을 것입니다. 데이터는 질문과 같이 응집되어 있거나 하루 종일 수정 구슬로 볼 수 있습니다. – RichardTheKiwi

+0

그것은 쿼리에서 작동하지만보기에 넣을 때 작동하지 않습니다. – aby

관련 문제