2014-09-02 164 views
1

我試圖從存儲在亞馬遜紅移文本字段中的JSON blob中提取一個整數。我的查詢看起來(大約),如:json_extract_path_text強制轉換爲int錯誤

select json_extract_path_text(json_column, 'integer_field')::int from data; 

不過,我得到一個奇怪的錯誤:

ERROR: Invalid digit, Value '1', Pos 0, Type: Integer 

爲什麼是 '1',一個非法數字型?這裏發生了什麼? (原文:

+0

請注意,我將它轉換爲int,因爲'json_extract_path_text'返回一個字符串。 – DaveA 2014-09-02 22:20:32

回答

4

事實證明(感謝this StackOverflow question),當JSON blob中沒有'integer_field'時,返回的值是空字符串''。出於某種原因,這不被轉換爲整數函數所支持。古怪的是,非空字符串「」就好了作爲輸入,所以下面的解決方法解決了這個問題:

nullif(json_extract_path_text(json_column, 'integer_field'), ' ')::int 

現在我們知道了。