我有一张桌子

    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

10-06 13:03