それはあなたの正規表現のせいです。 justを探すように変更します 連続するアルファベット:
select regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null
単一の文字でも機能します:
select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;
コメントしました:
最初に、必ずすべての情報を質問に入れてください。
改行文字(キャリッジリターンまたはキャリッジリターン/ラインフィード)で分割しようとしているようです
その場合、何かがない場所で分割しようとしています。 これらのキャラクターの1人。私は怠惰なので、ここではすべての制御文字を使用しましたが、提供されたデータに対しては機能します。ベルのキャラクターがいくつかいる場合、これは機能しません。より具体的にする必要があります。
with the_data as (
select 'a
b
c' as dat
from dual
)
select regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level)
from the_data
connect by regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level) is not null;