사업자등록번호(TaxNo)와 주민등록번호(ResNo)가 Null일 수 있을 때
고객테이블에서 TaxNo가 Null이 아니라면 TaxNo 일치로 고객을 찾고
TaxNo가 Null이라면 ResNo 일치로 고객을 찾고 싶습니다
Select * From customer
Where (TaxNo is null or Taxno='666-66-66666')
and (ResNo is null or ResNo='111111-1111111') 로 하니까 결과가 아래와 같아서 실패
Taxno ResNo 부합
1번 666-66-66666 111111-1111111 o
2번 666-66-66666 Null o
3번 Null 111111-1111111 o
4번 Null Null x
4번은 검색되지 않게 해야함
Select * From customer
Where ( TaxNo is null or Taxno='666-66-66666' )
and ( ResNo='111111-1111111' ) 로 하니까 결과는 아래와 같아서 실패
Taxno ResNo 부합
1 666-66-66666 111111-1111111 o
2 Null 111111-1111111 o
666-66-66666 null 도 검색되어야 함
방법을 좀 가르쳐 주시면 감사하겠습니다.
Comment 5
-
건우아빠
2019.07.15 21:04
with res as(select '1번' no, '666-66-66666' Taxno , '111111-1111111' ResNo union allselect '2번' no, '666-66-66666' , Null union allselect '3번' no, Null , '111111-1111111' union allselect '4번' no, Null , Null )select *from reswhere case when Taxno is null then ResNo else Taxno endin ( '666-66-66666' ,'111111-1111111') -
루디먼트
2019.07.16 07:17
isnull(Taxno, Resno) in (?, ?) -
건우아빠
2019.07.16 20:41
루디먼트님 답글 보니 생각나네요..
COALESCE(Taxno, Resno) 이것을 말씀 하신듯.
-
루디먼트
2019.07.16 23:34
Taxno와 Resno의 자릿수가 맞지 않아서 cte로 작성된 위의 예제에서는 결과가 나오지 않을 수 잇습니다.
convert(varchar(20), '666-66-66666') as Taxno 넣어주면 잘 되겟네요.
-
건우아빠
2019.07.19 23:10
제가 답글을 잘못 해석했네요...