substr 문 어떻게 수정해야될까요. 0 2 587

by 밤나무 [SQL Query] [2017.11.08 17:03:57]


안녕하세요 한가지 문의사항이 있어 문의 드립니다.

select sa_no from tka03 b where substr(b.sa_no, 1,4) between '2012' and '2016'

and substr(b.sa_no,5,3) ='202';

위와 같은 SQL 이있는데요 sa_no 자릿수는 varchar(14)입니다.

컬럼가공으로 인하여 sa_no 인덱스를 타지 못하는데 구글링을 해봐도 like로 변형해서 사용하라고 하는데 어떻게 수정해야될지 감이 안오네요...

어떻게 수정해야될까요? 조언부탁드립니다.

by jkson [2017.11.08 17:42:55]
select *
from
(
select to_char(level + 2012 - 1) || '202' sno
, to_char(level + 2012 - 1) || '202~' eno
from dual 
connect by level <= 2016 - 2012 + 1
) a, tka03 b
where b.sa_no between a.sno and a.eno

 


by 마농 [2017.11.09 09:20:58]
SELECT b.sa_no
  FROM (SELECT s + LEVEL - 1 || x || '%' v
          FROM (SELECT '2012' s, '2016' e, '202' x FROM dual)
         CONNECT BY LEVEL <= e - s + 1
        ) a
     , tka03 b
 WHERE b.sa_no LIKE a.v
;

 

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