【问题标题】:Cast from json to int not working?从 json 转换为 int 不起作用?
【发布时间】:2014-09-12 13:42:06
【问题描述】:

我需要以某种方式从 json 转换为 int。我做了这个功能。:

CREATE OR REPLACE FUNCTION json2int(p_json json)
  RETURNS integer AS
$BODY$DECLARE
  v_json json;
  --v_char character varying;
  v_int integer;
BEGIN
  SELECT p_json->'additionalData'->'id' INTO v_json;
  --SELECT CAST(v_json as character varying) INTO v_char;
  SELECT CAST(v_json as integer) INTO v_int;
  RETURN v_int;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION json2int(json)
  OWNER TO postgres;

我尝试从 json 转换为 int,但没有成功。然后我尝试从 json 转换为 int 的字符,这也没有用。所以我补充说:

CREATE CAST (json AS integer) WITH INOUT as implicit;

现在当我运行我的函数时:

SELECT json2int('{"additionalData":{"id":"4","userType":"viewer"},"type":"wall"}');

我收到此错误:

ERROR:  invalid input syntax for integer: ""4""
CONTEXT:  SQL statement "SELECT CAST(v_json as integer)"
PL/pgSQL function json2int(json) line 8 at SQL statement

有人可以帮忙吗?

【问题讨论】:

标签: json postgresql casting int


【解决方案1】:

正如 cmets 中所暗示的,使用 ->> 将文本转换为 int:

SELECT (p_json -> 'additionalData' ->> 'id')::int INTO v_int;

【讨论】:

    猜你喜欢
    • 2013-02-10
    • 2012-08-16
    • 2016-05-21
    • 1970-01-01
    • 2014-04-11
    • 2023-03-30
    • 2013-06-16
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多