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

Postgresql:無効な正規表現:無効な後方参照番号

    Postgresqlの問題は、まず、先読みアサーション内にキャプチャグループを含めることをサポートしていないことです。とはいえ、先読み内のすべてのキャプチャグループは、非キャプチャグループとして扱われます((?: ... ) )、私の強調:

    したがって、PostgreSQLが先読み内での後方参照のサポートをサポートしていたとしても、上記の制約のために期待どおりに機能しません(キャプチャグループがないと、後方参照を持つことはできません)。

    考えられる回避策(残念ながら、複雑な要件では時間がかかります)は、各文字の数を数えることです。

    WHERE
        LENGTH(REGEXP_REPLACE(name, '[^a]+', '', 'g')) < 2 AND
        LENGTH(REGEXP_REPLACE(name, '[^c]+', '', 'g')) < 2 AND
        LENGTH(REGEXP_REPLACE(name, '[^e]+', '', 'g')) < 2 AND
        LENGTH(REGEXP_REPLACE(name, '[^g]+', '', 'g')) < 2 AND
        LENGTH(REGEXP_REPLACE(name, '[^i]+', '', 'g')) < 3 AND
        LENGTH(REGEXP_REPLACE(name, '[acegi]+', '', 'g')) = 0;
    

    [この回答 から取得および変更された条件;最後の行は、文字列にそれらの文字のみが含まれるようにするためのものです]



    1. sha512のソルトおよびハッシュされたパスワードをMySQLに保存するにはどうすればよいですか?

    2. ユーザーIDのリストを保存するための最良の方法

    3. 時間を考慮せずに日時列でグループ化するにはどうすればよいですか?

    4. MySQLの「groupby」の「最後の」行を返す