从 redshift 中的 json 列中提取键值对
Extract key value pair from json column in redshift
我有一个 table mytable
以 JSON
字符串的形式存储列,其中包含多个键值对。现在,我只想提取与一个键对应的特定值。
存储这些字符串的列是 varchar 数据类型,创建为:
insert into mytable(empid, json_column) values (1,'{"FIRST_NAME":"TOM","LAST_NAME" :"JENKINS", "DATE_OF_JOINING" :"2021-06-10", "SALARY" :"1000" }').
如您所见,json_column
是通过仅插入一个字符串创建的。现在,我想做类似的事情:
select json_column.FIRST_NAME from mytable
我只想提取键FIRST_NAME
对应的value
。
虽然我实际的 table 比这个例子复杂得多,但我无法将这些 JSON
键本身转换成不同的列。但是,这个例子清楚地说明了我的问题。
这需要通过 Redshift 完成,请帮助我提出任何宝贵的建议。
利用Redshift的功能json_extract_path_text
可以轻松解决这个问题,如下:
select json_extract_path_text(json_column, 'FIRST_NAME') from mytable;
我有一个 table mytable
以 JSON
字符串的形式存储列,其中包含多个键值对。现在,我只想提取与一个键对应的特定值。
存储这些字符串的列是 varchar 数据类型,创建为:
insert into mytable(empid, json_column) values (1,'{"FIRST_NAME":"TOM","LAST_NAME" :"JENKINS", "DATE_OF_JOINING" :"2021-06-10", "SALARY" :"1000" }').
如您所见,json_column
是通过仅插入一个字符串创建的。现在,我想做类似的事情:
select json_column.FIRST_NAME from mytable
我只想提取键FIRST_NAME
对应的value
。
虽然我实际的 table 比这个例子复杂得多,但我无法将这些 JSON
键本身转换成不同的列。但是,这个例子清楚地说明了我的问题。
这需要通过 Redshift 完成,请帮助我提出任何宝贵的建议。
利用Redshift的功能json_extract_path_text
可以轻松解决这个问题,如下:
select json_extract_path_text(json_column, 'FIRST_NAME') from mytable;