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

Django。 PostgreSQL。 regexp_split_to_tableが機能しない

    バックスラッシュはDjangoによってメタ文字として扱われ、二重引用符で囲まれて解釈されます。したがって、E'\\s+')の1つのレイヤー 文字列がPostgreSQLサーバーに到着する前に削除されます。PostgreSQLサーバーにはE'\s+')が表示されます。 。エスケープ文字列は's+'になります これにより、regexp_split_to_table()が作成されます。 文字列を任意の数のsで分割します 非印刷スペースの代わりに、文字クラスの省略形\s 正規表現の略です。

    文字列のバックスラッシュを2倍にして、意図したものを取得します:E'\\\\s+')

    "SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"
    

    別の方法として、円記号の特別な意味に関する問題を回避するために\[[:space:]]を使用できます 同じ文字クラスを示すには:

    "SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"
    

    "の章の詳細マニュアルの「パターンマッチング」



    1. SQLで無効な識別子エラーのあるサブクエリ

    2. 別のサーバーからのphpmysqlConnectデータベース

    3. OracleデータベースのC#でデータセットを埋める方法

    4. SQLServerでのデータベースインデックス設計に関する5つの考慮事項