[英]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?
我很難處理所有這些復雜性。 為了這個問題,我有一個有兩列的表。 名為名稱的一列包含如下數據:
["Marc", "Teddy", "Katie"]
第二列包含 JSON 數據,如下所示:
{"males":[{"name":"Marc","age":"32"},{"name":"Teddy","age":"8"}],
"females":[{"name":"Katie","age":"28"}]}
SQL 中是否有辦法將第一列中的數組中的字符串與第二列中 JSON 數據中的名稱字段進行比較,以將 Z0ECD11C1D7A287401D148A23BBD7 中的名稱字符串中的年齡字段歸因於第一列?
我意識到這是一個復雜/復雜的情況,但是在我處理這個問題時,任何有助於從列中的數組中提取數據,或從列中的 JSON 中提取數據的任何幫助都對我非常有幫助。
似乎您需要JSON_CONTAINS()
和JSON_EXTRACT()
function 以便比較這些列,例如
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'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.