我可以使用to_json(1)
來將int轉換爲json,但是如何將json轉換爲int?這可能是太慢:如何將postgres json轉換爲整數
to_json(1)::text::int
另外,是JSON從二進制塊(BSON)或文本的一個簡單的包裝包裹?
我可以使用to_json(1)
來將int轉換爲json,但是如何將json轉換爲int?這可能是太慢:如何將postgres json轉換爲整數
to_json(1)::text::int
另外,是JSON從二進制塊(BSON)或文本的一個簡單的包裝包裹?
to_json(1)::文字:: INT也許太慢
但後來,它是唯一的方法。
問題的第二部分不清楚。
PostgreSQL 9.3 JSON支持只是驗證json文本。
在9.4和更新版本中,您可以使用jsonb。
「可能太慢」並沒有多少意義。是什麼讓你覺得這太慢了?你測試和基準?如果它「太慢」,那麼不是的速度太慢,即你期望的是什麼?
我什麼工作(使用posgtgresql 5.6)是
SELECT (tablename.jsoncolumnname->>'jsonfiledname')::int FROM tablename;
像
假設users
表
SELECT (users.data->>'failed_login_attempts_count')::int FROM users;
有一個名爲data
一個JSON列是這樣的:
{"failed_login_attempts_count":"2","comment":"VIP"}
謝謝你希望儘快發佈新版本。衆所周知,由於字符串和數字之間存在轉換,所以它肯定會比直接整數類型慢。在實際使用中它可以被接受,我們正在尋求更快的方式。 我把這個問題放在json-to-int的問題之下,因爲我懷疑json是從文本中包裝的,這讓json-to-int必須從文本中轉換,否則它的存儲結構應該已經被輸入了。 – Inshua
'jsonb'現在存在。它支持從json直接提取整數嗎? –
@Craig林格 - 它有問題,如果值爲空: select('[null]':: json-> 0):: text :: int引發無效輸入語法的整數:「空」,這是有道理的.. 。 這個作品:select('[null]':: json - >> 0):: int ...返回null – Reinsbrain