Postgresql
取消引用 JSON 字元串;列印不帶引號的 JSON 字元串
SELECT json_array_elements('["one", "two"]'::json)
給出結果
| json_array_elements | | :------------------ | | “一個” | | “二” |
我想要相同但沒有引號:
one two
看起來我不能
->>
在這裡使用,因為我在 JSON 中沒有欄位名稱。它只是一個字元串數組。Postgres 版本:x86_64-apple-darwin 上的 PostgreSQL 10.0,由 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 編譯(基於 Apple Inc. build 5658)(LLVM build 2336.11.00),64-少量
預設
json->text
強制輸出帶有雙引號 ("
),因為強制text
轉換為json
字元串需要雙引號輸入。要擺脫雙引號,請使用TRIM
SELECT x, trim('"' FROM x::text) FROM json_array_elements('["one", "two"]'::json) AS t(x); x | btrim -------+------- "one" | one "two" | two (2 rows)
但重要的一點是,如果你這樣做,你會失去一些效用。所有 JSONB 類型都以文本形式返回,可用於
jsonb
強制text->jsonb
返回。這是一個雙射映射函式。失去那個意味著null
和"null"
是一樣的,1
和是一樣的"1"
。SELECT x, trim('"' FROM x::text) FROM json_array_elements('[null, "null", 1, "1"]') AS t(x); x | btrim --------+------- null | null "null" | null 1 | 1 "1" | 1 (4 rows)
內裝..
如果你想知道發生了什麼。所有類型都可以提供一個
_out
將它們帶入text
或_send
將它們帶入二進製表示和倒數_in
以及_recv
將它們從這些形式中取出並映射回類型。在這裡你得到jsonb_out
,