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
운영게시판
최근게시물
Oracle Q&A 31506 게시물 읽기
No. 31506
char 과 varchar2 의 조인이 안되는데...
작성자
엔키
작성일
2007-07-31 12:57
조회수
1,440

A 라는 테이블에 user_id 는 char(16) 으로 선언되어있고,

B 라는 테이블에 user_id 는 varchar2(16) 으로 선언되어 있습니다.

하지만 이 둘을 조인해야하는데. 조인이 안되네요. 

둘 중 하나를 데이터 형변환을 해야 할 것같은데...

어떤 형변환 함수를 써야할지 막막하여 도움을 요청해봅니다.

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

훔...Nonpadded 문자비교 때문에 그렇게 되는 듯 하군요...;

일단 char(16)쪽 user_id를 RTRIM등 해서 비교하고 결과를 알려주세요...;


WHERE RTRIM(A.user_id) = B.user_id

성시현(finecomp)님이 2007-07-31 13:07에 작성한 댓글입니다.

char(16)쪽에 빈공백이 있어서 안되는겁니다.

위와같이 trim으로 공백을 제거하면 됩니다.

찔러님이 2007-07-31 13:16에 작성한 댓글입니다.
이 댓글은 2007-07-31 13:17에 마지막으로 수정되었습니다. Edit

A테이블의 USER_ID에 'ABC'라는 값이 들어간다면

실제로는 'ABC             '의 값이 들어갑니다.

그리고,

B테이블의 USER_ID에 'ABC'라는 값이 들어간다면

'ABC'로 들어가죠!


CHAR과 VARCHAR2의 타입의 차이점을 이해하신다면

쉽게 해결가능한 문제입니다.


이번 기회에 A테이블의 USER_ID의 칼럼 타입을 VARCHAR2로 변경하심 

어떨지여?!


A와 B 조인시에 제대로 인덱스를 타지 못해 쿼리 속도가 저하될거라 짐작됨당.

아님.. 함수인덱스를 사용하셔야 할꺼 같음다~!!

  


빈껍데기님이 2007-07-31 14:35에 작성한 댓글입니다. Edit

음...질문자분께서 느끼시고 해결방법은 그 다음 말씀드리려 했는데 빈껍데기님이 벌써 주셨네요...^^;

이런 경우를 "영역무결성"에 위배된 것이라 하며, 이는 해당 모델링상의 오류입니다.
"이번기회에"가 아니라 올바른 시스템을 위해서는 반드시 맞춰줘야 하는 항목이라고 생각합니다...
이 무결성을 맞춰주라고 강력추천합니다...참고하세요...;

건승하시길...수고하세요~~

ps) 참고로 오라클에서 문자비교 방법은 Nonpadded와 Blank-Padded가 있습니다.
data type등에 따라 약간 씩 다른데 이 중 varchar2나 nvarchar2 type이 있는 경우는 Nonpadded비교를 수행하게 됩니다.

성시현(finecomp)님이 2007-07-31 14:48에 작성한 댓글입니다.
이 댓글은 2007-07-31 14:55에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
31510추가하는 컬럼의 순서를 정해주는 방법이 있나요? [1]
초보
2007-07-31
1297
31509한 테이블에 Null로 되어 있는 컬럼을 시퀀스 주는법? [4]
전동호
2007-07-31
1304
31507프로시저에서 결과 행의 수를 어떻게 반환받나요? [3]
강민구
2007-07-31
1578
31506char 과 varchar2 의 조인이 안되는데... [4]
엔키
2007-07-31
1440
31505NUMBER(5) 면 5자리 인가요?
웁스
2007-07-31
909
31504엄청난 질문.. [5]
한번만
2007-07-31
2172
31503out 변수를 어떻게 출력하나요? [3]
강민구
2007-07-31
1790
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다