Q&A

  • 쿼리 조건문 처리 사항 문제.. 도와주세요..
안녕하세요.. 이렇게 글을 남기는 건 처음이네요..

제가 질문하고 싶은 건요..

조건문 처리에서.. '테이블의 필드값이 널이다'를 어떻게 표현하는지..



Select * from IPLog

where ( ( (D_RR_IP =:SelectedIP) and (D_IR_IP ='') and (D_ER_IP = '') ) or

( (D_IR_IP =:SelectedIP) and (D_ER_I ='') ) or

(D_ER_IP=:SelectedIP) )

order by DInDate, DInTime



문제가 되는 내용인데요..

여기에서 보시면.. D_RR_IP, D_IR_IP, D_ER_IP는 모두 필드 명이구요..

만약 SelectedIP 값이 D_RR_IP와 같고, 그외 나머지 두개의 필드값이 널이라면

or 문으로 연결된 첫번째 조건문이 해당되어 그 레코드의 값들을 불러오게 되어

있는데..

여기서 필드값이 널임을 표현하는 방법을 잘 몰라서요..

이 부분을 좀 도와 주시겠어요?

isnull 이라는 부분도 찾아보구. 했지만.. 초보라서.. 찾기도 좀 힘이 드네요..



그리고.. 또 하나만 더 질문하자면..

:= 연산자는 대입 연산자로 알고 있는데..

'=:' 이런 표현은.. 잘 몰라서..

이것도 연산자인가요?? 연산자라면 어떤 내용인지..

연산자에서 찾아 보질 못 해서요..



도와 주시겠어요??

부탁드립니다..









3  COMMENTS
  • Profile
    남호진 2001.10.17 22:25
    델파이초보 wrote:

    > 안녕하세요.. 이렇게 글을 남기는 건 처음이네요..

    > 제가 질문하고 싶은 건요..

    > 조건문 처리에서.. '테이블의 필드값이 널이다'를 어떻게 표현하는지..

    >

    > Select * from IPLog

    > where ( ( (D_RR_IP =:SelectedIP) and (D_IR_IP ='') and (D_ER_IP = '') ) or

    > ( (D_IR_IP =:SelectedIP) and (D_ER_I ='') ) or

    > (D_ER_IP=:SelectedIP) )

    > order by DInDate, DInTime

    >

    > 문제가 되는 내용인데요..

    > 여기에서 보시면.. D_RR_IP, D_IR_IP, D_ER_IP는 모두 필드 명이구요..

    > 만약 SelectedIP 값이 D_RR_IP와 같고, 그외 나머지 두개의 필드값이 널이라면

    > or 문으로 연결된 첫번째 조건문이 해당되어 그 레코드의 값들을 불러오게 되어

    > 있는데..

    > 여기서 필드값이 널임을 표현하는 방법을 잘 몰라서요..

    > 이 부분을 좀 도와 주시겠어요?

    > isnull 이라는 부분도 찾아보구. 했지만.. 초보라서.. 찾기도 좀 힘이 드네요..

    >

    > 그리고.. 또 하나만 더 질문하자면..

    > := 연산자는 대입 연산자로 알고 있는데..

    > '=:' 이런 표현은.. 잘 몰라서..

    > 이것도 연산자인가요?? 연산자라면 어떤 내용인지..

    > 연산자에서 찾아 보질 못 해서요..

    >

    > 도와 주시겠어요??

    > 부탁드립니다..

    >

    >

    >

    >

    첫 번째 질문에 대한 답변은 이 예제 소스로 대신하구요...

    with Field1 do

    begin

    if not IsBlob { this does not work for BLOB fields }

    begin

    { Allocate space }

    GetMem(MyBuffer, DataSize);

    try

    if not GetData(MyBuffer) then

    MessageDlg(DisplayName + ' is NULL', mtInformation, [mbOK], 0)

    else

    { Do something with the data };

    finally

    { Free the space }



    FreeMem(MyBuffer, DataSize);

    end;

    end;

    end;



    두번째 질문의 변수 앞에 : 이 붙은 것은 제가 보기엔 parameter같네요...

    즐프 되세요....

  • Profile
    사아랑 2001.10.17 21:14
    Select * from IPLog

    where ( ( (D_RR_IP =:SelectedIP) and (D_IR_IP is null) and (D_ER_IP is null) ) or

    ( (D_IR_IP =:SelectedIP) and (D_ER_I is null) ) or

    (D_ER_IP=:SelectedIP) )

    order by DInDate, DInTime





    델파이초보 wrote:

    > 안녕하세요.. 이렇게 글을 남기는 건 처음이네요..

    > 제가 질문하고 싶은 건요..

    > 조건문 처리에서.. '테이블의 필드값이 널이다'를 어떻게 표현하는지..

    >

    > Select * from IPLog

    > where ( ( (D_RR_IP =:SelectedIP) and (D_IR_IP ='') and (D_ER_IP = '') ) or

    > ( (D_IR_IP =:SelectedIP) and (D_ER_I ='') ) or

    > (D_ER_IP=:SelectedIP) )

    > order by DInDate, DInTime

    >

    > 문제가 되는 내용인데요..

    > 여기에서 보시면.. D_RR_IP, D_IR_IP, D_ER_IP는 모두 필드 명이구요..

    > 만약 SelectedIP 값이 D_RR_IP와 같고, 그외 나머지 두개의 필드값이 널이라면

    > or 문으로 연결된 첫번째 조건문이 해당되어 그 레코드의 값들을 불러오게 되어

    > 있는데..

    > 여기서 필드값이 널임을 표현하는 방법을 잘 몰라서요..

    > 이 부분을 좀 도와 주시겠어요?

    > isnull 이라는 부분도 찾아보구. 했지만.. 초보라서.. 찾기도 좀 힘이 드네요..

    >

    > 그리고.. 또 하나만 더 질문하자면..

    > := 연산자는 대입 연산자로 알고 있는데..

    > '=:' 이런 표현은.. 잘 몰라서..

    > 이것도 연산자인가요?? 연산자라면 어떤 내용인지..

    > 연산자에서 찾아 보질 못 해서요..

    >

    > 도와 주시겠어요??

    > 부탁드립니다..

    >

    >

    >

    >

  • Profile
    델파이초보 2001.10.25 01:59
    사아랑 wrote:

    > Select * from IPLog

    > where ( ( (D_RR_IP =:SelectedIP) and (D_IR_IP is null) and (D_ER_IP is null) ) or

    > ( (D_IR_IP =:SelectedIP) and (D_ER_I is null) ) or

    > (D_ER_IP=:SelectedIP) )

    > order by DInDate, DInTime

    >



    왜 그런지는 모르겠지만.. not is null은 실행이 되는데..

    is null이란 표현은 실행이 되지 않더라구요..



    Select * from iplog

    where ((D_RR_IP =:SelectedIP) and (D_IR_IP ='') and (D_ER_IP =''))

    or( (D_IR_IP =:SelectedIP) and (D_ER_IP ='') )

    or(D_ER_IP =:SelectedIP)



    이렇게 해서.. 해결을 했거든요.. *^^*...



    근데.. is null은 왜 안 되는 거지??

    이게 사용하는 DB 하고 상관이 있나요??

    전 mysql을 사용했거든요..