2017-01-03 1 views
0

SQL에서 솔루션 아래에 도착하기 위해 논리를 검색하고 있습니다. 입력이 쿼리가 "T I T T" 결과 모든 단어의 첫 글자를 반환해야합니다 제공하지 않는 경우 : 와일드 카드 charcters를 사용하여 문자열을 검색하는 SQL

문자열 입력이

This is the time 

사례 1 가정하자.

사례 2 : 입력이 T이면 다음 문자를 표시해야합니다.

예 : "h h i"

솔루션이 도착 할 수있는 방법에 대한 모든 입력?

+0

케이스 스탯/디코드와 하위 문자열 – SomeJavaGuy

+0

에 감사드립니다. 모든 예제 또는 포인터가 큰 도움이 될 것입니다. –

답변

0

이 경우 REGEXP_REPLACE을 사용합니다. 먼저 문자열 앞에 공백을 추가하십시오. 따라서 특정 문자 다음에 오는 문자 (예 : 't'다음의 문자 또는 공백 뒤에 오는 문자)를 항상 찾습니다.

select 
    case when instr(t.text, c.chr) > 0 then 
    regexp_replace 
    (
     t.text, 
     c.chr || '([^' || c.chr || '])[^' || c.chr || ']*', -- search pattern 
    '\1 ', -- replace pattern 
     1, 0, 'i' -- from the start, all occurerences, case insensitive 
    ) 
    else 
    null 
    end if 
from (select ' ' || 'This is the time' as text from dual) t 
cross join (select coalesce(:chr, ' ') as chr from dual) c;