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
운영게시판
최근게시물
DB2 Q&A 1628 게시물 읽기
No. 1628
CLI0109E 문자열 데이터 오른쪽 절단. SQLSTATE=22001 에러
작성자
김명조(povie)
작성일
2008-06-04 14:41
조회수
13,980

아바티스 + 스트러츠 + DB2 를 사용하고 있는데요

희안하게

SELECT

FROM TBL
WHERE
  '1'=?

이렇게 쿼리 를 짜고

? 자리에 '1' 자리보다 큰 데이터가 들어오면

예를 들면 '11' 이런식으로 한자리보다 큰 두자리가 들어왔을경우에요

--- Cause: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0109E  문자열 데
이터 오른쪽 절단. SQLSTATE=22001

이런 에러 메세지가 뿌려집니다.

현재 서버는 RESIN 서버를 사용하고 있고요

그렇다고 토드나 오토쿼리에서는 잘 돌아갑니다.

혹시 저 같은 문제에 빠져서 해결하신분 계신지요 ???

답변 부탁드립니다.

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

변수 선언을 char[1] 로 하지 않았나요? 
조는 냥이님이 2008-06-04 15:26에 작성한 댓글입니다. Edit

결국 변칙을 써서 해결은 했는데요

예를 들면 강제로 false 로 만드는 경우예요

where
   '11'=?

여기서 ? 에 값이 '1' 이거나 '11' 이면 에러 없이 false 와 true 로 되지만


여기서 ? 에 값이  '111' 곧 자리수가 커지면 위와같은 에러가 나더군요


결국 변칙을 써서

where
  char('11'||repeat(' ',1000))=? 이런식으로 했는데

꼭 이래야만 할까 고민이네요 ^^;



 

김명조(povie)님이 2008-06-04 16:10에 작성한 댓글입니다.
이 댓글은 2008-06-04 16:13에 마지막으로 수정되었습니다.

db2 "? 22001"

SQLSTATE 22001: Character data, right truncation occurred; for example, an
update or insert value is a string that is too long for the column, or a
datetime value cannot be assigned to a host variable, because it is too small.

변수에 값을 넣을때 이 값의 크기가 선언된 변수보다 큰 경우에 발생이 되는데 
님이 말씀하시는 내용를 보면 변수의 크기가 조건에 맞게 선언이 되는 것처럼 보이네요.

? 에 해당하는 변수선언이 어떻게 이루어 지는지 찾아보세요. 

조는 냥이님이 2008-06-04 17:25에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1631Database 행 [1]
박충원
2008-06-10
10271
1630DB2의 프로시져 작성 법.... [1]
프로시저
2008-06-09
13431
1629DB2 8버전을 구합니다. [1]
이도희
2008-06-09
10971
1628CLI0109E 문자열 데이터 오른쪽 절단. SQLSTATE=22001 에러 [3]
김명조
2008-06-04
13980
1627db2 쿼리와 웹상에서의 처리 방법이... [1]
teduri
2008-06-04
10615
1626cli 질문드립니다. [2]
이도희
2008-06-04
10302
1625스토어드 프로시져 빌딩 [5]
MARIN
2008-06-03
15996
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다