我收到json_each函数不存在的错误。我正在使用postgresql 9.3。我不知道什么是错的。请在这里帮助我。
select *
from json_each((
select ed.result
from externaldata ed
inner join
application a
on a.id = ed.application_id
))
limit 1;
内部循环查询返回:
" { "RespuestaSVC89":{
"Header":{
"Transaccion":"EXPE",
"Servicio":"92",
"CodigoRetorno":"00",
"NumeroOperacion":"201409147001616",
"CodigoModelo":"13852901"
},
"meta":{
"billa":"EXPE",
"numo":"52",
"Retorno":"01",
"Operacion":"2014091470",
}
}
}"
所以它应该工作但不知何故不起作用
确切的错误信息是:
ERROR: function json_each(text) does not exist
LINE 2: from json_each((
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function json_each(text) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 15
答案 0 :(得分:5)
错误消息指出不存在json_each(text)函数,但我知道存在json_each(json)函数。关键是将ed.result转换为json数据类型,如下所示:
select *
from json_each((
select ed.result::json
from externaldata ed
inner join
application a
on a.id = ed.application_id
))
limit 1;
如果您的数据确实是有效的json,您可以考虑将ed.result列设置为json类型(在实际表中)而不是text类型。当9.4出现时,您几乎肯定希望使用jsonb数据类型来利用该数据类型带来的性能和空间优势。