ana*_*arD 1 postgresql int json casting
我需要以某种方式从 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;
Run Code Online (Sandbox Code Playgroud)
我尝试从 json 转换为 int,但没有用。然后我尝试从 json 转换为字符到 int,这也不起作用。所以我补充说:
CREATE CAST (json AS integer) WITH INOUT as implicit;
Run Code Online (Sandbox Code Playgroud)
现在当我运行我的函数时:
SELECT json2int('{"additionalData":{"id":"4","userType":"viewer"},"type":"wall"}');
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
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
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
正如评论中所暗示的那样,使用->>文本然后转换为 int:
SELECT (p_json -> 'additionalData' ->> 'id')::int INTO v_int;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4366 次 |
| 最近记录: |