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 28041 게시물 읽기
No. 28041
단순한 쿼리 질문입니다..
작성자
새내기
작성일
2009-02-19 15:27ⓒ
2009-02-19 15:33ⓜ
조회수
5,042



TOTAL이란 테이블에 

sum, point라는 필드가 있습니다.. 

필드 속성은 varchar 입니다.. 


======================

user     sum         point

======================

aaaaa  10000         0

bbbbb  2000          0

ccccc  30             0

======================


요렇게 있을때 


point 항목에 sum의 자릿수에서 맨 마지막 자리를 뺀 값을 update 하려고 합니다 

 

예를들면.. 

aaaaa라는 사용자는 point가 1000이 되고, 

bbbbb라는 사용자는 point가 200이 되고, 

ccccc라는 사용자는 point가 3이 되겠네요..


자바에서는 substring이란 함수가 있어서 찾아봤는데 

끝에 한자리만 빼고 값을 업데이트 할수 있는 방법이 없네요.. 



어떻게 하면 좋을까요??? 

각각의 sum의 자릿수를 구해서 그 자릿수 -1만큼 오른쪽에서 가져오게 하려니깐 이것도 좀 비효율적인것 같고.. 



쿼리 한방으로 가능한 방법은 없을까요??

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

숫자로 캐스팅 한 다음에 /10해서 저장하면 되겠군요. ( 이런걸 원하신게 아닌가요? -_- )

박현우(lqez)님이 2009-02-21 13:19에 작성한 댓글입니다.

substring의 개념은 mysql에서는 사용할수 없는가봐요?? 제가 잘 몰라서.. ^^

cast함수를 찾아보니 스트링을 int로 변환하는건 없던데...

함수를 여쭤봐도 될까요??   부탁드리겠습니다..
새내기님이 2009-02-23 10:50에 작성한 댓글입니다. Edit

안녕하세요 박성원입니다. 

cast함수는 제가 알기로는 mysql 4.x 이상의 상위버전에서 사용이 가능합니다. 
즉, 컬럼 값의 type을 바꿔주는건데요 이건 인터넷을 통해 쉽게 알수있으니 조금 무식한 방법이지만
아래와 같이 처리할 수 도있습니다. 


select mid(num,1,length(num)-1) 


참고로 cast함수는 많은 도움을 주는 함수이기때문에 꼭 찾아보시는게 좋을것 같네요 ^^


박성원(darkancia)님이 2009-02-24 09:24에 작성한 댓글입니다.
이 댓글은 2009-02-24 09:24에 마지막으로 수정되었습니다.

박성원님 답변 감사드립니다.. 
정말 죄송하지만 위에 질문처럼 테이블에 적용시키려면 어찌해야 할까요?? 
단순히 mid 함수를 써서 하면 되겠는데 스트링 열을 줄때랑 
테이블에서 select를 해서 그 값을 다시 mid값을 넣으려니 
어떻게 해야할지 모르겠습니다.. 
이걸 한방에 처리해야하는데.... ㅠㅠ 

정말 쿼리는 어려운것 같아요.. 부탁드립니다.. ㅠㅠ

새내기님이 2009-02-24 15:04에 작성한 댓글입니다. Edit

select mid(sum,1,length(sum)-1) from TOTAL



흠 sum이 함수이름도 있어서 될런지는 잘 모르겟네요 테스트 한번 해보시구 답변 부탁드려요 ^^

박성원(darkancia)님이 2009-02-24 16:16에 작성한 댓글입니다.

아.. 이렇게 쓰는거군요.. 테이블명을 어디다 써야하는지를 몰라서.. ㅋㅋ 
잘 됩니다.. sum으로 컬럼명을 안주고 다른이름으로 테이블을 만들었습니다.. 
감사합니다. ^^


그런데.. 위에 질문처럼 쿼리한방에 sum에 있는 값에 맨 마지막 자리수만 빼고 
point라는 컬럼에 update를 칠려고 합니다.. 


update 테이블 set point = 요렇게 하고 적어주신 문장을 쓸라하니까는 
에러가 나는데 아마 뒤에 있는 테이블이 update하려고 하는 테이블과 같아서 그런것 같아요.. 

이 서브 쿼리는 어떻게 해야하나요? 
select를 먼저 하고서 그 값을 update문에 넣어주어야 하는건가요?? 
이것도 쿼리 한방으로 가능한건가요?? 죄송하지만 예시문 하나만..... 
 
죄송합니다.. 마지막 질문이에요.. ^^;;;; ;
새내기님이 2009-02-25 17:44에 작성한 댓글입니다.
이 댓글은 2009-02-25 17:55에 마지막으로 수정되었습니다. Edit

안녕하세요 박성원입니다. 

ㅎㅎ 이제서야 글을 봤네요 ;;

update를 어떻게 하시는지 정확하게 말씀해주시지 않았네요 

전체테이블을 가정햇을때 


update TOTAL set sum=mid(sum,1,length(sum)-1) 


이 query만으로도 수정이 가능합니다. ^^;

박성원(darkancia)님이 2009-02-27 12:04에 작성한 댓글입니다.
이 댓글은 2009-02-27 12:04에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
28045mysql status 질문 [1]
김성환
2009-02-19
5119
28044mysql: unknown variable 'default-collation=euckr_korean_ci'이렇게나옴 어떻게해야되나요? [2]
이성훈
2009-02-19
6996
28043테이블에서.. [2]
이성식
2009-02-19
5093
28041단순한 쿼리 질문입니다.. [7]
새내기
2009-02-19
5042
28040[문의] 리눅스에서 mysqld 가 자동 리셋? [1]
골빈당
2009-02-19
5115
28039인덱스 [4]
이성식
2009-02-18
4735
28038남은부분 범위 뽑아오는 쿼리. [2]
이상
2009-02-18
4435
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다