database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27553 게시물 읽기
No. 27553
[질문]varchar 형의 Max 값 구하기
작성자
박계원
작성일
2008-05-13 13:27
조회수
5,825

안녕하세요?


간단한 쿼리문을 작성했는데 원하지 않는 결과 값이 나와서 문의드립니다.


varchar 형에 max 값을 구하는 쿼리입니다.


select max(licenseno) as maxLicense from site_server;


licenseno 에 들어 있는 값은.


99

98

... 중략 ...


529

528

..

..

null


이렇게 값이 있구요.


원하는 결과 값은 529 값인데, 실제 리턴되는 값은 99 입니다.


아마 varchar 형이라 문자로 값을 인식해서 99를 max 값으로 인식하는것 같습니다.

이같은 경우 어떻게 529값을 어떻게 가져 올 수 있는지 알 수 있을까요???


글을 읽어주셔서 감사합니다. 즐거운 하루되세요.

이 글에 대한 댓글이 총 3건 있습니다.

다른 방법을 찾긴했지만..

select max(lpad(licenseno,10,0)) from site_server;

lpad 로 99를 099 로 만든 다음 비교 하는 방법이 있네요.

비효율적 이라는 생각이 드네요.. ㅠ_ㅠ 다른 방법을 알고계신 분은 알려주세요.

(--)(__)

본인님이 2008-05-13 13:32에 작성한 댓글입니다. Edit

max(length(licenseno)||licenseno)


이렇게 해보면 어떨까요?

이대현(root)님이 2008-05-15 11:51에 작성한 댓글입니다.

컬럼 타입이 varchar 로 되어있고, 이에 들어있는 값들이 모두 숫자라면
다음처럼 하셔도 되겠네요.

SELECT MAX(CAST(LICENSENO AS DECIMAL)) AS MAXLICENSE FROM SITE_SERVER;

그리고  null 값은 0 으로 리턴받으실려면

SELECT (CASE LICENSENO WHEN LICENSENO IS NULL THEN 0 ELSE MAX(CAST(LICENSENO AS DECIMAL)) END) AS MAXLICENSE FROM SITE_SERVER;

와 같은 방식으로 하시면 됩니다.

야노님이 2008-05-17 09:33에 작성한 댓글입니다.
이 댓글은 2008-05-17 09:41에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27556한테이블에 필드끼리 데이타 복사가 가능한지요? [1]
초이스
2008-05-14
3605
27555서버 셋팅 조언 부탁드립니다. [1]
지니
2008-05-13
3326
27554디비자동 백업관련 입니다.. [2]
정기수
2008-05-13
4210
27553[질문]varchar 형의 Max 값 구하기 [3]
박계원
2008-05-13
5825
27551LOAD DATA 사용시 한글이 깨지네요. ㅠㅠ [2]
강재호
2008-04-30
4038
27550일주일(한달)중 토요일과 일요일은 출력하지 않게하려면
최재영
2008-04-30
3353
27549mysql.sock 접속 문제.... ㅜㅜ
박화은
2008-04-29
3732
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다