PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgresql:Ekspresi reguler tidak valid:nomor referensi balik tidak valid

Masalah dengan Postgresql adalah yang pertama, ia tidak mendukung memiliki grup tangkap dalam pernyataan lookahead-nya. Karena itu, semua grup tangkap dalam lookahead akan diperlakukan sebagai grup non-capture ((?: ... ) ), penekanan saya:

Jadi, meskipun PostgreSQL mendukung memiliki referensi balik dalam pandangan ke depan, PostgreSQL masih akan gagal berfungsi seperti yang diharapkan karena batasan di atas (tanpa grup tangkapan, Anda tidak dapat memiliki referensi balik).

Solusi yang mungkin (sayangnya akan panjang untuk persyaratan yang rumit) adalah menghitung jumlah setiap karakter:

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;

[kondisi diambil dan diubah dari jawaban ini ; baris terakhir adalah untuk memastikan hanya ada karakter tersebut dalam string]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony3 menyimpan setiap pembaruan ke dalam basis data

  2. Apa sintaks PostgreSQL yang setara dengan Oracle CONNECT BY ... MULAI DENGAN?

  3. Bagaimana cara memetakan jenis kolom Interval PostgreSQL di Hibernate?

  4. postgres - di mana di (daftar) - kolom tidak ada

  5. Kondisi SQL pada fungsi Window