Q&A

  • NULL COLUMN이 조건식에 있을 때..도와줘요...제발
제가 그동안 몰랐던 거였는지...-.-;;

변수를 입력받아 조회할 때..변수를 입력하지 않으면 전체조회하려고 합니다.



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  COMMENTS
  • Profile
    난초보 2001.03.16 23:53
    초보왕 wrote:

    > 제가 그동안 몰랐던 거였는지...-.-;;

    > 변수를 입력받아 조회할 때..변수를 입력하지 않으면 전체조회하려고 합니다.

    >

    > 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)

    쪼끔 모순은 있을꺼 같지만

    응용하시면 될꺼 같네요..



  • Profile
    초보왕 2001.03.17 01:46
    난초보 wrote:

    > 초보왕 wrote:

    > > 제가 그동안 몰랐던 거였는지...-.-;;

    > > 변수를 입력받아 조회할 때..변수를 입력하지 않으면 전체조회하려고 합니다.

    > >

    > > 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)

    > 쪼끔 모순은 있을꺼 같지만

    > 응용하시면 될꺼 같네요..

    >



    답변에 감사합니다.

    but

    그렇게 하면...index를 못타고 table을 full read해버릴 텐데요....

    임시방편은 되지만...근본적으로 해결이....안되네염...

    insert할때 not null이 되게 모조리 스페이스를 넣을수도 없구...어휴...

    조건식에서 빼자니...앞으로 그런 문제가 많을 텐데 깜깜하네요