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

Đặt $$ trong chuỗi được trích dẫn bằng đô la trong PostgreSQL

Sử dụng đô la-dấu ngoặc kép thay vào đó:

select upsert(
   $unique_token$INSERT INTO zz(a, b) VALUES (66, 'ha$$hahaha')$unique_token$,
   $unique_token2$UPDATE zz SET a=66, b='hahahaha' WHERE a=66$unique_token2$
   )

Mỗi kết thúc phải phù hợp với mỗi bắt đầu. Hai cặp không nhất thiết phải khác biệt, nhưng theo cách đó thì an toàn nhất.

Điều này vẫn để lại một cơ hội lý thuyết rằng báo giá đô la có thể được khớp bên trong chuỗi.

Nếu bạn đang tạo truy vấn bằng tay, chỉ cần kiểm tra $ trong chuỗi. Nếu bạn đang tạo truy vấn từ các biến, bạn có thể sử dụng quote_literal(querystring) thay vào đó.

Ngoài ra còn có định dạng format() chức năng.

Xem:

Bên cạnh:Tôi giả sử bạn biết rằng dạng SQL động này cực kỳ dễ bị tấn công bởi SQL injection? Bất kỳ thứ gì thuộc loại này chỉ nên được sử dụng rất riêng tư hoặc rất an toàn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres regex sự cố

  2. Làm cách nào để kết nối với cơ sở dữ liệu Postgres trên Docker trong Windows 10 bằng SQLAlchemy?

  3. Từng bước postgres_fdw

  4. Postgres tìm tất cả các hàng trong bảng cơ sở dữ liệu khớp với tiêu chí trên một cột nhất định

  5. Trình kích hoạt chèn postgresql để đặt giá trị