SELECT *
FROM A
WHERE ISNULL(TEST,'4') LIKE @변수 + '%'
이런식의 조회문이 있는데요
TEST컬럼에 널값이 존재하는 컬럼이구요
넘어오는 변수는 ''을 포함하여 1~5까지 넘어오는데요
''가 넘어올 경우에는 전체 조회가 되게 되는데
아무래도 LIKE 조회시 NULL값은 조회가 안되는 것 때문에
이즈널 처리를 한것 같은데.....
혹시 WHERE절에 이즈널 처리안하고 같은 결과값이 나오게 하는 방법이 있을까요??
Comment 5
-
처리짱
2018.02.21 19:48
-
축구선수
2018.02.22 09:23
안되네여ㅠㅠ
SET ANSI_NULLS OFF로 변경해도
값이 다르게 나오네여...
아마 라이크 조건문 때문에 안되는거 같아여...
= 이나 <> 조건문은 되는데
-
항해자™
2018.02.22 23:28
select * from tSample
where test like @pTest +'%'
union all
select * from tSample
where test is null
and @pTest = 4 -
건우아빠
2018.02.23 11:40
테이블에 default 처리하시고
널값을 4로 변경하시면 되지 않을 까요
데이타 정리하시거나
다른 방법으로 테이블에 계산필드 추가후 이 계산필드로 조회 하세요 -
안돼요
2018.02.23 11:48
SELECT *
FROM A
WHERE 1 = (CASE WHEN TEST LIKE @P + '%' THEN 1
WHEN @P = '' THEN 1
ELSE 0 END)
변수값이 있을땐 변수값에 맞는 것만 조회하고
변수가 없을 땐 전부 다 조회 됩니다.
set ansi_nulls off
SELECT *
FROM A
WHERE TEST LIKE @변수 + '%'