簡體   English   中英

如何從 Redshift/SQL 中的 json 字符串字段解析檢索值

[英]How to parse retrieve value from a json string field in Redshift/SQL

我有一排看起來像這樣:


編號 | json_list | 預期結果

"1" | [{"id":"1", "text":"text1"},{"id":"3", "text":"text3"}] | “文本1”

"2" | [{"id":"2", "text":"text2"},{"id":"3", "text":"text3"}] | “文本2”


我想根據 id 列檢索“文本”字段。 如何在 AWS Redshift 中實現這一目標? 我知道 Redshift 有一些 json 功能,它需要與某種循環條件配對,但我不確定它是否可能在 SQL

請讓我知道,如果我是否正確理解了您的問題。 因為數據有點混亂。

Id 列值 - 2 您的 Json 值 - [{"id":"1", "text":"text1"},{"id":"3", "text":"text3"}]預期結果 - text1

解決方案->

第 1 步- 遍歷各種 JSON 元素

select json_extract_array_element_text('[{"id":"1", "text":"text1"},{"id":"3", "text":"text3"}]',1)

在此處輸入圖像描述

第 2 步- 解析特定 JSON 元素中的鍵、值對

select json_extract_path_text(json_extract_array_element_text('[{"id":"1", "text":"text1"},{"id":"3", "text":"text3"}]',1),'text')

在此處輸入圖像描述

所以,假設我有一張桌子 -

create table dev.gp_test1_20200731
(
id int,
json_list varchar(1000),
expected_result varchar(100)
)

插入數據 -

insert into dev.gp_test1_20200731
values
(1,'[{"id":"1", "text":"text1"},{"id":"3", "text":"text3"}]', 'text1'),
(2,'[{"id":"2", "text":"text2"},{"id":"3", "text":"text3"}]', 'text2')

數據如何 -

在此處輸入圖像描述

這就是查詢的方式 -

select json_extract_path_text(json_extract_array_element_text(json_list,1),'text')
from dev.gp_test1_20200731
where id = 2

結果 -

在此處輸入圖像描述

但是,將 JSON 存儲在 Redshift 中並不是一個好習慣。

關於原因的文檔 - 鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM