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

Postgres:文字列のN番目の文字までのテキストを抽出します

    パターンマッチング を使用できます Postgresの機能。

    最初にパターンを理解する 4番目までのすべてをキャプチャする> キャラクター。

    パターンを開始するには、>以外をキャプチャするサブグループを作成する必要があります 文字、および1つの> キャラクター:

    ([^>]*>)
    

    次に、それを4回キャプチャして、>の4番目のインスタンスに到達します。

    ([^>]*>){4}
    

    次に、それをグループにラップして、一致すると4つのインスタンスすべてが返されるようにする必要があります。

    (([^>]*>){4})
    

    文字列の先頭(中央ではなく)からのみ一致するように、文字列の先頭記号を適切に配置します。

    ^(([^>]*>){4})
    

    これが実際のregex101の例です!

    最初のグループ要素(右側のパネルのオンライン正規表現で確認できます)で必要なものを返すパターンを取得したら、SQLでそれを選択し直す必要があります。

    Postgresでは、サブストリング関数 正規表現パターンを使用して、部分文字列の「from」ステートメントを使用して入力からテキストを抽出するオプションがあります。

    最後に、すべてをまとめます!

    select substring(filter_type from '^(([^>]*>){4})')
    from filter_table
    

    ここで動作するsqlfiddleを参照してください

    >のインスタンスが4つ未満の場合は常に、文字列全体を照合する場合 、次の正規表現を使用します:

     ^(([^>]*>){4}|.*)
    


    1. 顧客の複数のアドレスとデフォルトアドレスのMySQLデータベース設計

    2. MySQLとPostgreSQLのJSON検索機能

    3. 楽観的ロックを使用するときにデッドロックが発生する可能性はありますか?

    4. SQLクエリは最初の行のみを返します