2014-12-05 53 views
1

我收到錯誤,json_each函數不存在。我正在使用postgresql 9.3。我不知道什麼是錯的。請在這裏幫助我。函數json_each不存在

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

請發佈**完全**錯誤信息(使用複製粘貼) – 2014-12-05 19:36:06

+0

什麼數據類型是ed.result?它是文本還是json?嘗試將其轉換爲json – 2014-12-05 21:00:24

+0

@a_horse_with_no_name我發佈了它。 – Billa 2014-12-07 02:16:34

回答

3

的錯誤消息指出沒有json_each(文本)函數存在,但是我知道有一個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; 

你可能會考慮ed.result列是類型JSON(在實際的表),而不是類型的文本,如果你的數據確實是所有的有效JSON。當9.4出現時,您幾乎肯定會想要使用jsonb數據類型來利用該數據類型帶來的性能和空間優勢。

+0

當我運行此查詢時出現以下錯誤: 錯誤:子查詢返回多於一行作爲表達式 **********錯誤**** ****** – Billa 2014-12-08 10:48:37

+0

您是使用這個確切的SQL或其他東西。我無法理解這將發生在這個確切的SQL ..這是SQL包裝在更多的SQL?你能給我們一個完整的SQL返回這個錯誤的例子嗎? – 2017-06-05 14:17:55