這種解決方法並不適用如何將json數組轉換爲文本數組?
CREATE FUNCTION json_array_castext(json) RETURNS text[] AS $f$
SELECT array_agg(x::text) FROM json_array_elements($1) t(x);
$f$ LANGUAGE sql IMMUTABLE;
-- Problem:
SELECT 'hello'='hello'; -- true...
SELECT (json_array_castext('["hello","world"]'))[1] = 'hello'; -- false!
那麼,如何獲取文本的真實陣列? PS:與所謂的「頭等公民」JSONb,同樣的問題。
編輯:@OtoShavadze很好的答案後(註釋解決了!),一個清單PostgreSQL開發者所需:爲什麼x::text
不是鑄造?(使用pg 9.5.6)以及爲什麼它不會生成警告或錯誤?
嘗試'json_array_elements_text'而不是'json_array_elements' –
是的!謝謝@OtoShavadze!請將其作爲回答發佈,以供我正式驗收(!)。我正在編輯只爲PostgreSQL開發人員製作清單;-) –