PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Поставете $$ в низ в кавички в долари в PostgreSQL

Използвайте различни доларови кавички вместо това:

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$
   )

Всеки край трябва да съответства на всяко начало. Не е необходимо двете двойки да се различават, но така е най-безопасно.

Това все още оставя теоретичен шанс котировката за долар да бъде съпоставена вътре в низа.

Ако създавате заявката на ръка, просто проверете за $ в низа. Ако изграждате заявката от променливи, можете да използвате quote_literal(querystring) вместо това.

Има и удобния format() функция.

Вижте:

Настрана:предполагам, че сте наясно, че тази форма на динамичен SQL е изключително уязвима за SQL инжектиране? Всичко от този вид трябва да е само за много лична или много сигурна употреба.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Приложение Spring Boot 2.1 без HikariCP Connection pooler

  2. Запазване на голям data.frame в PostgreSQL с R

  3. Heroku Rails Rake Task за синхронизиране на производство и локална база данни

  4. org.postgresql.util.PSQLException:Големите обекти не може да се използват в режим на автоматично записване

  5. Какъв е правилният начин за snyc/импортиране на таблици от postgres DB към elasticsearch?