그렇습니다. 원래 max() 라는 함수는 aggregate 함수로서 그 인자를 정수를 사용함을 원칙으로 합니다. 하지만 ASCII 문자열도 받아 들입니다. 즉 ASCII 문자열에 대해서도 원래 제대로 된 결과를 보여줄 목적으로 만들어진 함수라는 것이지요.
하지만 무슨 이유인지는 몰라도 문자열에 대해서는 그 결과값을 신뢰할 수 없는 경우가 많습니다. 하지만 수치 자료형에 대해서는 정확한 결과를 돌려 줍니다. 그러므로 code 라는 field 처럼 숫자를 문자열로 저장한 경우에는 강제로 숫자로 type casting 을 시켜서 max 함수를 이용해 보시기 바랍니다.
즉....
select max( codeno::int ) from model_code;
물론 결과에 대해서는 저도 장담을 못합니다. 해 본적이 없어서... :/)
하지만 상식적으로 생각할때 제대로 나올 것 같습니다. :/)
(해보고 결과 적어 주세요.)
> > > 제가 model_code라는 table을 만든수
> > > 값을 이렇게 넣었습니다!
> > > code name gubun
> > > ///// ///// //////
> > > 01 name1 gubun1
> > > 02 name2 gubun2
> > > 03 name3 gubun3
> > >
> > > 이상태에서
> > > select max(code)
> > > where model_code ;
> > > 라는 select문을 주면 max값으로 '02'를 가지고 옵니다!
> > > 정말 이상합니다. 조언 부탁드리겠습니다!
> > > code : char(2) name : varchar(20) gubun : varchar(20)
> > > 입니다.
> >
> > 제 생각에는 max라는 명령어가 char형에는 안되는것 같군요...
> > 제가 해본 결과 int형은 되는데......
> > char형은 이상한 값이 나오네요.......
> >
> > code를 int형으로 정의하시고 다시 해보세요.....
> > .
> >
> 이럴순 없습니다. 외 char형으로 max 값을 못가져온단 말입니까?
> 흑.. 흑.. 흑..
>
|