PostgreSQLの関数が任意の型を返すようにする方法はありますか?
PLV8を使用して、PostgreSQL9.2のJSONタイプからフィールドを取得して比較しようとしています。
次の作品:
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';
countフィールドが10未満の場所を返します。ただし、フィールドが数値でない場合は失敗します。jsonが保持する可能性のあるすべてのタイプのデータに対して特定の関数を作成したくないのですが、データ型を何らかの方法で推測して暗黙的にキャストする方法はありますか?
新しいPostgreSQLJSONデータ型内のフィールドを使用してクエリを実行するにはどうすればよいですか?も参照してください。