私は次のような文字列を持っています:
hheelllloo wwoorrlldd !!
それは返すべきhello world!
上記の私の試みは
SELECT regexp_substr('hheelllloo wwoorrlldd !!', '.', LEVEL*2-1)l_val
FROM dual
CONNECT BY LEVEL <= LENGTH('hheelllloo wwoorrlldd !!')/2;
しかし、それは私が必要とする方法ではなく、ロジックが正しく使用されていません。私も使ってみました'(\w)\1'
サンプルデータでの私の期待される結果:
WITH t AS
( SELECT 'hheelllloo wwoorrlldd!!' AS word FROM dual
UNION
SELECT 'hellow world!' FROM dual
UNION
SELECT 'ootthheerrss' FROM dual
UNION
SELECT 'ootthheeerrss' FROM dual
)
SELECT * FROM t;
出力は次のようになります。
hello world! --expression applied
hellow world! -- not needed for non-repeated characters
others --expression applied
otheers --applied and extra `e` considered as non-repeated.
単一のクエリで全体を作成できますか、それとも最初のクエリですか? 事前に感謝します。これは私の練習のためであり、さまざまなロジックを知るためのものです.