sql >> データベース >  >> RDS >> Oracle

行で区切られた異なる長い単語の正規表現

    それはあなたの正規表現のせいです。 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;
    


    1. データをHerokuにプッシュするときのエラー:タイムゾーンの変位が範囲外です

    2. MySQL MATCHは2文字では機能しませんか?

    3. 特定の列名を持つMySQLのすべてのテーブルを見つけるにはどうすればよいですか?

    4. 行の挿入時に最後のID(IDENTITY)を返すVB.NET MySQL