MySQL JSON 子查询查询

标签 mysql json wildcard contains

我有一个表A

    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 .

关于MySQL JSON 子查询查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652300/

相关文章:

PHP删除用户收藏夹

python - 如何在 Python 中遍历给定 AST 的所有节点?

java Runtime.getRunTime().exec 和通配符?

java - Java 中的静态和非静态 vs 泛型和通配符

php - 无法使用php在远程服务器上创建xml文件

mysql - 如何组合两个表中的列和条件语句创建的别名?

PHP + MSSQL 使用命名参数不是 '?' 的 PDO

java - 使用curl命令将包含base 64编码文件(大小400Mb)的json上传到spring REST接口(interface)

c# - WebAPI 无法解析 multipart/form-data post

python glob 为 "excluding pattern"