문제)
아래와 같은 컬럼을 갖는 테이블 t가 있을때,
with t as (
select '5500' column_a from dual union all
select '554' from dual union all
select '5540' from dual union all
select '55' from dual union all
select '5539' from dual)
변수 '5544' 로 주어진다면, 주어진 변수값과 처음 1byte씩 비교했을때,
처음부터 연속으로 가장 많이 매칭되는 값을 가진 행을 구하는 쿼리를 만드는 것이다.
즉, 위에서 결과값은 '554'가 되겠다.
'5540'은 매칭되지 않는 문자 '0'이 있기때문에 제외해야 한다.
답변)
쿼리는 아래와 같다.
SELECT MAX (column_a)
FROM t
WHERE '5544' LIKE column_a || '%'
출처 : http://www.soqool.com
자세한 출처 : http://www.soqool.com/servlet/board?cmd=view&cat=100&subcat=1010&seq=677&page=2&position=2