음...
또 다른 예를 들어야 겠군요.
SQL> desc bonus
Name Null? Type
------------------------------- -------- ----
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
SAL NUMBER
COMM NUMBER
SQL> select * from bonus
2 where (ename + job) in(2);
ENAME JOB SAL COMM
---------- --------- ---------- ----------
1 1 10 10
위의 결과과 무엇을 말하는가 하면
오라클에서는 SQL문을 해독 하면서 수식연산이 들어가면
각 컬럼들을 TO_NUMBER로 데이타를 변환하여 결과값을 냅니다.
그리고 BETWEEN A AND B도 마찬 가지이죠..
그런데 질문하신 답이 맞는지....
이런 의도의 질문인가요...
즉 A,B가 VARCHAR2이면 어떻게 하냐구요..
그러면 간단합니다. IN ('2')싱글 커테이션을 붙이면 됩니다.
도움이 되었셨나요.
메일 잘 받았습니다. 좋은 하루 되세요....
> 예를 들어 데이타 타입이 varchar2 형태라면 어떻게 해야 할까요
> 이것때문에 일이 진행이 안되고 있습니다.
> 고수님들 한번더 부탁드립니다.
> ::전명균 님께서 쓰시길::
>
> > 참 재미 있군요. Mysql을 안 써보았지만 오라클에서도 됩니다.
> > 그런데 질문의 요지를 정확히 판단은 못하겠지만 맞겠죠.
> > 예를 들어
> > SQL> select * from bouns
> > 아래 데이타는 제가 임의로 test하기위해 입력했습니다.
> > ENAME JOB SAL COMM
> > ---------- --------- ---------- ----------
> > A B 1 1
> >
> > SQL> select * from bonus
> > 2 where (sal + comm) in(1);
> >
> > no rows selected
> >
> > SQL> select * from bonus
> > 2 where (sal + comm) in(2);
> >
> > ENAME JOB SAL COMM
> > ---------- --------- ---------- ----------
> > A B 1 1
> >
> > 즉, SAL과 COMM은 NUMBER TYPE 입니다.
> > 'IN'을 사용하면 몇십개라도 상관 없겠죠.
> > 퍼포먼상에서도 equal 이기 때문에 휠씬 낮죠......
> > 조그이나마 도움이 되었으면 합니다.
> > 좋은 하루 되세요...
> >
> > ::최대룡 님께서 쓰시길::
> > > 그렇게 말구요
> > > 예를들어서 5개의 항목중 3개만 일치하는 경우에도 그렇게
> > > 씉다면 어떻게 될까요
> > > or가 수십개나 들어가야 합니다.
> > > Mysql처럼 할방법은 없을까요?
|