sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで文字列値(evalなど)内でクエリを実行する方法はありますか?

    「eval」しようとしているステートメントが常に同じデータ型を返す場合は、Grzegorzが言及したEXECUTEを使用するeval()関数を作成できます。

    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. ORDERBYとGROUPBYを一緒に使用する

    2. MariaDBでのCONV()のしくみ

    3. ScaleGridは、マネージドデータベースホスティング用のOracleCloudを追加します

    4. mysqlで連番のギャップを見つける方法は?