2017-01-03 10 views
0

SQLでは、解決策の下に到着するロジックを検索しています。何も入力クエリが"T I T T"その結果、すべての単語の最初の文字を返す必要がありません:ワイルドカード文字を使用して文字列を検索する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; 
関連する問題