PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách thích hợp để thêm văn bản chưa thoát từ một trường vào regex trong postgres?

Điều dễ dàng nhất để làm là sử dụng một regex để chuẩn bị cho chuỗi của bạn ở trong một regex. Việc loại bỏ các ký tự không phải từ trong chuỗi của bạn phải đủ để làm cho nó trở nên an toàn, ví dụ:

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

Vì vậy, một cái gì đó như thế này sẽ hoạt động nói chung:

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

ở đâu xy là các phần khác của regex.

Nếu bạn không cần regex ở cuối (tức là không có y ở trên), thì bạn có thể sử dụng (?q) :

và một q có nghĩa là:

Vì vậy, bạn có thể sử dụng:

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

trong trường hợp hạn chế này.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt PostgreSQL 9.1 và mã hóa cơ sở dữ liệu

  2. Cách tạo Pivot Table trong PostgreSQL

  3. Nhập Java trong JDBC sang Postgres ltree

  4. Làm cách nào để ngắt một truy vấn RPostgresql trong R

  5. rails postgres LỖI:cú pháp nhập không hợp lệ cho loại chính xác kép