티스토리 뷰

말이 조금 어려운데,

SQL구문에서

 - where조건에 대해서 결과값이 없으면 where조건절을 skip하여 테이블 전체조회하고,

 - where조건에 대해서 결과가 있으면 where조건절을 걸어서 테이블 조건조회하는 로직이 필요했다.

 

도식화를 하자면 아래처럼 하고 싶다는것!

 

 

 

 

 

🧡 왜 필요한가?

- redash에서 시각화하는 것때문인데

- 실무자 요청사항이 기본적으로 전체내역이 보이고, 만약에 입력값(id)을 입력하면 해당 입력값에 해당하는 내역만 보고 싶다는 것이었다.

   > Thus,

만약에 입력값을 10을 입력하면 select * from table where id = '10' 이 적용되어야 하고,

만약에 입력값을 입력하지 않으면 select * from table 이 적용이 되어야 하는 상황.

 

 

 

 

 

🧡 방법

다양한 서칭과 시도를 해보았다. 이런 게 처음이라 그런지 해당 문제로 3시간은 쓴 듯....

- PL/SQL로 if 구문으로 하는 방법

- UNION ALL 사용하는 방법 SELECT 'ALL'  UNION ALL SELECT * 

- INTERSECT 사용

- WHERE절에 LIKE와 DECODE 사용하는 방법 (이 방법도 될 거 같은데, redash에서 DECODE지원이 안된다!! 🤯)

  혹시 모르니 내가 참고했던 링크 ( https://limkydev.tistory.com/159 )

- 내가 최종 사용한 로직

  >> 입력값(입력값1,입력값2)이 없거나

       혹은 입력값이 있는데 그게 특정값인 것 

 

WHERE (

            (  :입력값1 IS NULL and :입력값2 IS NULL  )
            OR
            (
              :입력값1 IS NOT NULL AND (

                                                     ID = :입력값1
                                                   or ID = :입력값2
                                                   or ID= :입력값3
                                                          )
                     )

           )

 

 

 

 

 

 

🧡 참고 (감사드립니다!! 🙏🙏🙏 )

 

http://www.gurubee.net/article/59846

 

파라미터가 null일때 where 조건 안타게 하는 방법

약간 설명이 복잡한데요파라미터로 name='test'은 넘어옵니다.하지만 만약 파라미터가 null이라면 where 조건 자체를 안타게 하고싶은데 방법이 있나..

www.gurubee.net

like 개발자가 된 기분으로... 서칭에 서칭을 거듭하다가

위 링크에서 나는 '미농'님의 idea로 해결했다!

Q.(질문)

A.(답변)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함