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

Има ли някакъв начин да се изпълни заявка вътре в стойността на низа (като eval) в PostgreSQL?

Ако изразите, които се опитвате да "eval", винаги връщат един и същ тип данни, можете да напишете функция eval(), която използва EXECUTE, споменат от Grzegorz.

create or replace function eval(expression text) returns integer
as
$body$
declare
  result integer;
begin
  execute expression into result;
  return result;
end;
$body$
language plpgsql

Тогава можете да направите нещо като

SELECT eval('select 41') + 1;

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

Също така имайте предвид, че това създава огромен риск за сигурността, като изпълнява произволни изрази. Ако това е проблем, зависи от вашата среда. Ако това се използва само в интерактивни 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. Колко различен е PostgreSQL от MySQL?

  2. Не мога да се свържа с PostgreSQL с PHP pg_connect()

  3. Oracle към PostgreSQL:ANSI външен синтаксис на присъединяване в PostgreSQL

  4. Как да групирате времеви печати в острови (въз основа на произволна празнина)?

  5. Python psycopg2 не се вмъква в таблицата на postgresql