向PostgreSQL的jsonb列插入一维数组时出现语法错误如何解决
错误原因
你写的{"14160000000","17780000000"}是PostgreSQL原生数组的字面量语法,仅适用于text[]、int[]这类PostgreSQL内置数组类型,不符合JSON数组的语法规范,因此PostgreSQL无法将其解析为合法的jsonb值,抛出语法错误。
正确插入方案
有三种常用的插入方式,你可以根据使用场景选择:
直接传入合法JSON数组字符串
JSON数组要求用方括号[]包裹元素,修改后的INSERT语句如下:INSERT INTO public.conversations(conversation_id, participants) VALUES ('123456', '["14160000000","17780000000"]');将PostgreSQL原生数组转换为jsonb
如果你已使用PostgreSQL原生数组存储参与者数据,可以通过to_jsonb()函数直接转换,无需手动拼接JSON字符串:INSERT INTO public.conversations(conversation_id, participants) VALUES ('123456', to_jsonb(ARRAY['14160000000','17780000000']::text[]));动态构建jsonb数组
如果需要动态生成数组元素,可使用jsonb_build_array函数,自动处理类型转换和引号转义,避免语法错误:INSERT INTO public.conversations(conversation_id, participants) VALUES ('123456', jsonb_build_array('14160000000','17780000000'));
内容的提问来源于stack exchange,提问作者Sumchans
相关产品推荐
相关产品推荐

