PostgreSQLで任意の型を返す関数を持たせる方法はありますか?任意の型を返すPostgreSQL関数
私は、PostgreSQL 9.2のJSONタイプのフィールドを取得して比較するためにPLV8を使用しようとしています。カウント・フィールドが< = 10ですが、フィールドが数値でない場合、それが失敗した場所を返す
CREATE or replace FUNCTION jn (j json, key any) RETURNS numeric
LANGUAGE plv8
IMMUTABLE
AS $function$
var ej = JSON.parse(j);
if (typeof ej != 'object') return NULL;
return JSON.stringify(ej[key]);
$function$;
SELECT * FROM things WHERE jn(data,'count') <= '10';
:
次作品。 jsonが保持する可能性のあるすべてのタイプのデータに対して特定の関数を作成する必要はありません。何らかの理由でデータ型を推測して暗黙的にキャストする方法はありますか?
はあなたがPolymorphic typesと機能を探しているように見えるHow do I query using fields inside the new PostgreSQL JSON datatype?
ええ、「エラー:エラー:PL/v8関数が型anyelementを返すことができません」というエラーが発生しました。 –
動的にキャストすることは可能ですか?それでタイプを検出し、それに応じてキャストしますか?私は事前にタイプを知らない。 –