정렬하기 위해서는 쿼리에 'order by ' 를 사용하는 건 모두 알고 있다.
정렬하는 필드의 타입이 숫자인 경우에는 문제되는 것이 없지만 문자열로 된 숫자는 조금 문제가 된다.
kill_no varchar(3); 으로된 필드가 있다고 하자.
kill_no
3
29
45
의 필드가 있을때 정렬을 통해 3, 29, 45 가 나타날 거라고 생각하지만
실제로는 29, 3, 45 이런 식으로 정렬이 된다.
왜냐하면 위의 필드가 숫자처럽 보이지만 실제는 varchar 이기 때문에 문자열로 보기 때문이다.
첫자리의 3이 2보다 큰 것은 당연하다.
이를 해결하기 위해 postgreSQL은 to_number() 함수를 제공한다.
select * from table order by to_number(kill_no, 999);
위에서 '999'는 필드의 자릿수를 채워주기 위함이다.
이런 문제는 7.4 버전 또는 이하에서 나타나며 8.1 버전에는 나타나지 않는다.
8.0 버전에서는 아직 확인하지 못했다.
즉 8.1 버전이상에서는 숫자로된 문자열을 정렬하기 위해 to_number()함수를 사용하지 않아도 된다.