json_extract mysql 如何输入动态键?
How to input dynamic key to json_extract mysql?
我有一个 table(称之为 abc
),如下所示:
名为“可能性”的列是一个 JSON 对象(键值)。
我有另一个 table(我们称之为 xyz
),其中包含 CustomerId 和 key(整数值)列。
我根据 customerid 加入上面的两个 table,例如:
Select xyz.customerid, key, label from xyz join abc on xyz.customerid = abc.customerid
问题:
我想根据 table xyz
的 key
列中提供的密钥,从 likelihood
列的 JSON 对象中找到 label
table abc
。
我发现的函数 JSON_EXTRACT
的所有示例都传递了硬编码密钥,而不是从数据库中获取的动态密钥值。
第一个问题是:我的 JSON 对象包含 keys,它们是 integer 值而不是字母或单词。因此,为了以整数作为键来引用值,我们需要将其写下来:
JSON_EXTRACT(json_object, '$."int_key"')
这是我的解决方案:
Select xyz.customerid,key,JSON_EXTRACT(abc.likelihood,concat('$."',xyz.key,'"')) as label from xyz join abc on xyz.customerid = abc.customerid;
我有一个 table(称之为 abc
),如下所示:
名为“可能性”的列是一个 JSON 对象(键值)。
我有另一个 table(我们称之为 xyz
),其中包含 CustomerId 和 key(整数值)列。
我根据 customerid 加入上面的两个 table,例如:
Select xyz.customerid, key, label from xyz join abc on xyz.customerid = abc.customerid
问题:
我想根据 table xyz
的 key
列中提供的密钥,从 likelihood
列的 JSON 对象中找到 label
table abc
。
我发现的函数 JSON_EXTRACT
的所有示例都传递了硬编码密钥,而不是从数据库中获取的动态密钥值。
第一个问题是:我的 JSON 对象包含 keys,它们是 integer 值而不是字母或单词。因此,为了以整数作为键来引用值,我们需要将其写下来:
JSON_EXTRACT(json_object, '$."int_key"')
这是我的解决方案:
Select xyz.customerid,key,JSON_EXTRACT(abc.likelihood,concat('$."',xyz.key,'"')) as label from xyz join abc on xyz.customerid = abc.customerid;