簡體   English   中英

如何將表的一列中的字符串數組中的數據與表中另一列中的 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?

我很難處理所有這些復雜性。 為了這個問題,我有一個有兩列的表。 名為名稱的一列包含如下數據:

["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.

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