sql >> Database teknologi >  >> RDS >> PostgreSQL

Er der nogen måde at udføre en forespørgsel inde i strengværdien (som eval) i PostgreSQL?

Hvis de udsagn du forsøger at "eval" altid returnerer den samme datatype, kan du skrive en eval() funktion, der bruger EXECUTE nævnt af 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

Så kunne du gøre noget som

SELECT eval('select 41') + 1;

Men denne tilgang virker ikke, hvis dine dynamiske udsagn returnerer noget forskelligt for hvert udtryk, du vil evaluere.

Husk også på, at dette åbner en enorm sikkerhedsrisiko ved at køre vilkårlige udsagn. Hvis det er et problem, afhænger af dit miljø. Hvis det kun bruges i interaktive SQL-sessioner, er det ikke et problem.



  1. Sådan returneres forespørgselsresultater som en kommasepareret liste i SQL Server – STRING_AGG()

  2. Sådan returneres den aktuelle rækkeversionsværdi for en SQL Server-database (T-SQL-eksempel)

  3. Sådan opsætter du Oracle EBS Auditing

  4. Android:onUpgrade kalder ikke ved databaseopgradering