我有一张桌子
id
something
jsonModel
jsonModel可能看起来像这样
{
"text":"foo",
"subkey1":{
"entity":{
"name":"foo",
"customId":"59d61ffcf5bcb11f250d73275a252b62624eac000180ab59"
}
}
}
当jsonModel中包含某个ID时,我试图从表A中选择一行。
我已经尝试过了,但是不能在表达式中使用通配符,这是行不通的
SELECT
*
FROM A
WHERE json_contains(jsonModel,'59d61ffcf5bcb11f250d73275a252b62624eac000180ab59', $**.customId)
有一种方法可以知道我不知道模型customId在哪里吗?
编辑:
我最终写了这个可行的方法,但是我不知道这与wchiquito之间哪种解决方案是最好的
SELECT *
from A WHERE
JSON_CONTAINS(JSON_EXTRACT(jsonModel, '$**.customId'), '"59d61ffcf5bcb11f250d73275a252b62624eac000180ab59"');
最佳答案
尝试:
SELECT
`id`,
`jsonModel`
FROM
`A`
WHERE
JSON_SEARCH(
`jsonModel`,
'one',
'59d61ffcf5bcb11f250d73275a252b62624eac000180ab59',
NULL,
'$**.customId'
) IS NOT NULL;
请参见db-fiddle。