제가 그동안 몰랐던 거였는지...-.-;;
변수를 입력받아 조회할 때..변수를 입력하지 않으면 전체조회하려고 합니다.
SELECT ....
FROM TAB1 A, TAB2 B
WHERE A.COL1 = B.COL1
1번 -- AND A.COL2 = DECODE(:V2,'',A.ORDER_DT,:V2) '
2번 -- AND A.COL3 LIKE DECODE(:V3,'','%',:V3) '
변수 V2, V3는 미입력시 전체 데이타를 조회하고자 하는 것입니다.
여기서 1번처럼 쓰는 것이 나을까요 아니면 2번처럼 쓰는 것이 나을까요..?
일단 2번이 INDEX를 타는 방향이기는 하겠죠?
두번째 COL3이 KEY값이 아니어서 INSERT시에 NULL값을 넣었습니다.
그러자 조회시 NULL인 관계로 전체조회하고자 하여 변수에 NULL을 입력해서 '%'로 조회했더니 NO DATA FOUND가 나와버리더군요
NULL은 해당사항이 아니라서요
NULL 칼럼은 아예 조건식에 들어갈 수 없는 건가요???
COL3이 NULL이더라도 그 데이타는 조회해야 하거든요..
도와주세염
> 제가 그동안 몰랐던 거였는지...-.-;;
> 변수를 입력받아 조회할 때..변수를 입력하지 않으면 전체조회하려고 합니다.
>
> SELECT ....
> FROM TAB1 A, TAB2 B
> WHERE A.COL1 = B.COL1
> 1번 -- AND A.COL2 = DECODE(:V2,'',A.ORDER_DT,:V2) '
> 2번 -- AND A.COL3 LIKE DECODE(:V3,'','%',:V3) '
>
> 변수 V2, V3는 미입력시 전체 데이타를 조회하고자 하는 것입니다.
> 여기서 1번처럼 쓰는 것이 나을까요 아니면 2번처럼 쓰는 것이 나을까요..?
> 일단 2번이 INDEX를 타는 방향이기는 하겠죠?
> 두번째 COL3이 KEY값이 아니어서 INSERT시에 NULL값을 넣었습니다.
> 그러자 조회시 NULL인 관계로 전체조회하고자 하여 변수에 NULL을 입력해서 '%'로 조회했더니 NO DATA FOUND가 나와버리더군요
> NULL은 해당사항이 아니라서요
> NULL 칼럼은 아예 조건식에 들어갈 수 없는 건가요???
> COL3이 NULL이더라도 그 데이타는 조회해야 하거든요..
> 도와주세염
>
>
나두 초본데 이렇게 한번 해보세요
2번처럼 쓰는데.
AND NVL(A.COL3,'X') LIKE DECODE(:V3,'','%',:V3)
쪼끔 모순은 있을꺼 같지만
응용하시면 될꺼 같네요..