안녕하세요..
수파베이스 데이터베이스에서 아래의 함수를 만들었습니다.
ㅁ 함수 기능
ㅇ 인자 userprovince를 받아서
- 인자 값이 있으면 users 테이블에서 regionProvince 값이 userprovince와 동일한 값을 가져오고
- 인자 값이 없으면 users 테이블에서 regionProvince 값 상관 없이 전체 값을 가져옴
ㅁ 문의사항
ㅇ 아래 where 조건문과 같이 userprovince is not null인 경우 해당 검색 수행를 수행하나,
- userprovince is null 조건의 경우 실행이 안 되고 있음
- userprovince = '' 이 조건으로 해도 실행이 안 됨
>> 함수 호출 시 해당 파라미터의 값이 없을 경우 어떻게 조건문을 작성해야 하나요?
고수님들 답변 주시면 감사하겠습니다.
create
or replace function gamerank ( userprovince varchar, usergugun varchar) returns
table (
regionProvince varchar,
regionGuGun varchar,
) as $$
begin
return query
select
users."regionProvince" as regionProvince,
users."regionGuGun" as regionGuGun,
from
users
join "MathRecord" gmr on users.id = gmr.userid
where gameid = 1
and
(
(userprovince is not null and users."regionProvince" = userprovince)
or
(userprovince is null and users."regionProvince" != '')
)
;
end;
$$ language plpgsql;
마농님의 의견 처럼 구문을 빼고 or 절 전체를 빼도 해당 조건에서는 레코드를 가져오지를 못하네요...
호출 시 userprovince 파라미터 값이 없을 경우, 쿼리문에서 파라미터 값이 없는 조건을 사용할려면 어떻게 해야 하나요?
null, '' 모두 원하는 결과값을 모두 가져오지 못하네요...
>> or (userprovince is null and users."regionProvince" != '')
>> or (userprovince is '' and users."regionProvince" != '')
의견 주시셔 감사드리며, 추가 의견 주시면 감사하겠습니다.
not null인 경우는 해당 조건에 맞게 가져오는데,
아래와 같이 is null, = '' 조건으로 할 경우는 원하는 결과값을 못가져오네요...
답변 주셔서 감사드립니다.
and (
(userprovince is not null and users."regionProvince" = userprovince)
or
(userprovince = '')
)
==============================================================
and (
(userprovince is not null and users."regionProvince" = userprovince)
or
(userprovince is null)
)
==============================================================
and (
(userprovince is not null and users."regionProvince" = userprovince)
)
==============================================================
참고로 이렇게 해보면은 전체 레코드를 가져옵니다.
and (
(userprovince is not null and users."regionProvince" <> '' )
)