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

Cara yang tepat untuk menambahkan teks yang tidak lolos dari bidang ke regex di postgres?

Hal termudah untuk dilakukan adalah menggunakan regex untuk menyiapkan string Anda menjadi regex. Melarikan diri dari karakter non-kata dalam string Anda harus cukup untuk membuatnya aman-regex, misalnya:

=> select regexp_replace('. word * and µ{', E'([^\\w\\s])', E'\\\\\\1', 'g');
   regexp_replace   
--------------------
 \. word \* and µ\{

Jadi sesuatu seperti ini seharusnya berfungsi secara umum:

where some_text ~* x || regexp_replace(some_field, E'([^\\w\\s])', E'\\\\\\1', 'g') || y

dimana x dan y adalah bagian lain dari regex.

Jika Anda tidak memerlukan regex di bagian akhir (mis. tidak ada y di atas), maka Anda dapat menggunakan (?q) :

dan q artinya:

Jadi Anda bisa menggunakan:

where some_text ~* x || '(?q)' || some_field

dalam kasus terbatas ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melewati array array sebagai parameter ke suatu fungsi

  2. Bagaimana cara menggunakan pemicu PostgreSQL?

  3. cara apa pun untuk membuat kueri berparameter dan merangkumnya dalam fungsi python

  4. Postgres - Bagaimana cara memanggil ST_SetSRID(ST_MakePoint(lng, lat), 4326) secara otomatis pada sisipan?

  5. Tidak dapat mendekripsi menggunakan pgcrypto dari AES-256-CBC tetapi AES-128-CBC tidak masalah