如何将 table 中一列中的字符串数组中的数据与 table 中另一列中的 JSON 数据进行比较?
How can I compare the data in an array of strings that is in one column of a table to JSON data within another column in the table?
我很难处理它的所有复杂性。为了这个问题,我有一个包含两列的 table 。一列名为 names 的数据如下:
["Marc", "Teddy", "Katie"]
第二列包含 JSON 如下数据:
{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}],
"females":[{"name":"Katie","age":"28"}]}
SQL 中有没有办法将第一列数组中的字符串与第二列 JSON 数据中的名称字段进行比较,从而将 SQL 中的年龄字段归因于 JSON 到第一列中的名称字符串?
我意识到这是一种 complex/complicated 情况,但是任何有关从列中的数组中提取数据或从列中的 JSON 中提取数据的帮助都将非常有帮助我在做这个的时候。
似乎您需要 JSON_CONTAINS()
和 JSON_EXTRACT()
函数才能比较那些列,例如
WITH t(col1,col2) AS
(
SELECT '["Marc", "Teddy", "Katie"]',
'{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}], "females":[{"name":"Katie","age":"28"}]}'
)
SELECT JSON_EXTRACT(col2,'$.males[*].name') AS males,
JSON_EXTRACT(col2,'$.females[*].name') AS females
FROM t
WHERE JSON_CONTAINS(col1,JSON_EXTRACT(col2,'$.males[*].name'))
OR JSON_CONTAINS(col1,JSON_EXTRACT(col2,'$.females[*].name'))
我很难处理它的所有复杂性。为了这个问题,我有一个包含两列的 table 。一列名为 names 的数据如下:
["Marc", "Teddy", "Katie"]
第二列包含 JSON 如下数据:
{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}],
"females":[{"name":"Katie","age":"28"}]}
SQL 中有没有办法将第一列数组中的字符串与第二列 JSON 数据中的名称字段进行比较,从而将 SQL 中的年龄字段归因于 JSON 到第一列中的名称字符串?
我意识到这是一种 complex/complicated 情况,但是任何有关从列中的数组中提取数据或从列中的 JSON 中提取数据的帮助都将非常有帮助我在做这个的时候。
似乎您需要 JSON_CONTAINS()
和 JSON_EXTRACT()
函数才能比较那些列,例如
WITH t(col1,col2) AS
(
SELECT '["Marc", "Teddy", "Katie"]',
'{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}], "females":[{"name":"Katie","age":"28"}]}'
)
SELECT JSON_EXTRACT(col2,'$.males[*].name') AS males,
JSON_EXTRACT(col2,'$.females[*].name') AS females
FROM t
WHERE JSON_CONTAINS(col1,JSON_EXTRACT(col2,'$.males[*].name'))
OR JSON_CONTAINS(col1,JSON_EXTRACT(col2,'$.females[*].name'))