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 35277 게시물 읽기
No. 35277
where 조건 in에서..
작성자
whereIn
작성일
2009-02-22 17:23
조회수
4,190
SELECT * FROM TB_C99_DOCINFO WHERE docID in (SELECT docAttach FROM TB_C99_DOCINFO A WHERE docID =125)

in 부분의 서브쿼리(SELECT docAttach FROM TB_C99_DOCINFO A WHERE docID =125)의 결과가 
 31,32 이런 식으로 나오는데..
docID number형태이다 보니 docID  ORA-01722: 수치가 부적합합니다 이렇게 오류가 나는데요..

혹시나해서  WHERE to_char(docID ) 이런 식으로 하면 에러는 안나는데 데이터도 안나오더군요...;


어떻게 해야할지... 

이 글에 대한 댓글이 총 4건 있습니다.
아래와 같이 한번 해보세요..

SELECT * FROM TB_C99_DOCINFO WHERE docID in (SELECT TO_NUMBER(docAttach) FROM TB_C99_DOCINFO A WHERE docID =125)
Konan(한재우)님이 2009-02-23 09:03에 작성한 댓글입니다.

그렇게 했을 때는 바로 TO_NUMBER(docAttach) 이부분에서 에러가 납니다.
수치가 부적합하다구요... 
그게 아무래도 데이타가 30,31 이렇게 딜리미터가 붙어서 나오기 때문에 숫자형으로 변환은 어려울 것 같네요..

whereIn님이 2009-02-23 10:47에 작성한 댓글입니다. Edit

설계상의 문제죠.  첨부파일 번호를 그냥 단일컬럼에 처리하셨나본데...



그냥 조인하면 당연히 맞는게 없으니 Null 이 나올 것이고...



먼저 docAttach 를 ','를 구분자로 하여 쪼개고 나서야 조인이 가능합니다.  성능도 문제고 가급적 이런식의 설계는 피하심이 좋을 듯 합니다. 



어쨌거나...



SELECT *

  FROM tb_c99_docinfo

 WHERE docid IN (SELECT     TRIM (SUBSTR (txt, INSTR (txt, ',', 1, LEVEL) + 1,

                                          INSTR (txt, ',', 1, LEVEL + 1) - INSTR (txt, ',', 1, LEVEL) - 1)) AS token

                       FROM (SELECT ',' || docattach || ',' txt

                               FROM tb_c99_docinfo a

                              WHERE docid = 125)

                 CONNECT BY LEVEL <= (LENGTH (txt) - 2) - LENGTH (REPLACE (txt, ',', '')) + 1)

나그네님이 2009-02-23 15:59에 작성한 댓글입니다. Edit

쿼리 넘 잘 되네요..^^
감사합니다ㅎ

저희가 이게 차세대의 걸린 거라..
설계가 문제인건 알았지만
어떻게 할 수 없는 상황인지라...

암튼 나그네님 감사합니다^^

whereIn님이 2009-02-23 16:31에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
35280dba_jobs 생성 [1]
고민자
2009-02-23
2906
35279Group By 한 데이터 중 각각 최근 1건만 가져오기 질문이요! [5]
박지훈
2009-02-23
4903
35278select문 컬럼에 다른select문 결과 어떻게 조회할수 있나요? [1]
이경남
2009-02-23
3697
35277where 조건 in에서.. [4]
whereIn
2009-02-22
4190
35276사이즈 문제입니다. [1]
녹차군
2009-02-20
3028
35274...? [1]
김재운
2009-02-20
2585
352734000BYTE 이상 데이타값 넣기 [1]
rotkrrn
2009-02-20
3237
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다