sql 쿼리 바인드변수관련 문의드립니다. 0

by 헝오 [SQL Query] [2022.03.07 18:28:20]


안녕하세요 SQL 쿼리에서 바운드변수 관련하여 문의드립니다.

기존에 조건문에서

예시) v = '01', '02', '03', '04'   AND NVL(:v, '%')

해당 예시처럼 v에는 입력값을 받거나 %는 전체로 지정해놓아서 null일경우 '%'전체로 데이터가 추출되게 조건문을 걸어놓았었습니다.

기존에는 v에 값으로 하나의 값만 받았는데 이번에는 01과02, 02와03 이런식으로 2개이상의 데이터 값을 받으려고 하는데 혹시 어떤 LIKE를 이용해서 하거나

다른 방법이 있을까요?  (v에 입력받을 수 있는 값은 최소 2개 ~ 최대 4개입니다. '01','02','03','04' 4개의 값을 모두 받을때는 전체로 데이터가 추출되게 하는 조건문입니다.)

 

by 마농 [2022.03.08 09:27:39]
-- '01,02,03' 형태로 들어온다고 가정
-- 4개 값만 있다면 인덱스 사용 등의 성능향상은 무의미할 것 같습니다. (성능 무시)
SELECT *
  FROM t
 WHERE INSTR(:v, v) > 0
;

 


by 헝오 [2022.04.04 17:51:28]
알림 설정을 안해놔서 지금 확인했네요....ㅎ

감사합니다 마농님

한가지 여쭤보고 싶은점이 전체를 어떻게 받느냐에 따라서 WHERE절을

WHERE INSTR(NVL(:v, v), v) > 0

이렇게 작성해도 쿼리상으로는 문제가 없을까요?

아무런 값도 들어오지 않는다고 가정을 했을때 NULL을 전체로 받고 싶어서요

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입