【问题标题】:Bug in integrate MySQL function JSON_SEARCH集成 MySQL 函数 JSON_SEARCH 中的错误
【发布时间】:2021-05-02 10:00:26
【问题描述】:

我如何在所有值上使用 MySQL 函数 JSON_SEARCH,而不仅仅是在字符串上?

所有这些错误都记录在 MySQL 模拟器上:https://www.db-fiddle.com/f/2UdrxqrQ3DeonbKWw3pVVp/0

我有 DDL:

CREATE TABLE table_name (
    id int NOT NULL AUTO_INCREMENT,
    json_config JSON,
    PRIMARY KEY (id)
);


INSERT INTO table_name (id,json_config)
VALUES 
  (NULL, '{
    "_id": "60111111111111175b78fe2fa",
    "intestx": 0,
    "codes": [
        48348,
        28923,
        39080
   ],
   "test": 562222222222456
   }'); 

查询 #1:

SELECT 
    JSON_SEARCH(json_config, 'all', '%1111%')
FROM table_name;

结果 #1:

"$._id" #this is OK

查询 #2:

SELECT 
    JSON_SEARCH(json_config, 'all', '%2222%')
FROM table_name;

结果 #2:

null # this is bad BUG, because is exist match with $.test

感谢您对如何搜索所有值的建议,不仅是字符串,还包括数字等。

编辑:自 2015 年以来,我在 MySQL bugzilla 上发现了此错误报告,但此错误尚未解决,仅更新有关仅在字符串上进行函数搜索的文档... :-D https://bugs.mysql.com/bug.php?id=79233

MySQL 可能无法正确搜索,只能搜索字符串。所以我可能无法通过SQL(视图)来解决,但我必须通过PHP + SQL(表)的形式对自己的逻辑进行复杂的编程来解决......

我对此一点也不高兴。如果您知道任何可以做到这一点的方便的 PHP 组件。我的意思是将 JSON 解析为键、值组合以创建变量列表的所有组合。

【问题讨论】:

  • 使 "test" 值成为字符串,而不是数字,然后是 it works 我在文档中没有看到任何具体的内容,所以我不确定情况可能是什么?
  • @PaulT。但是,在我的示例中,我声明该字符串有效。但是,我正在寻找价值,在这种情况下它不起作用。也许它会以某种方式指定分隔符。我无法将所有数字都转换为字符串,但这是个坏主意。

标签: mysql sql json search mariadb


【解决方案1】:

该错误仅存在于 MySQL 中。我安装了 MariaDB,它在那里正常工作。所以我将使用 MariaDB,它为我解决了这个问题。

编辑:我不能让自己解决问题... :-) 但这对我来说已经解决了。

【讨论】:

    猜你喜欢
    • 2019-02-23
    • 2017-12-03
    • 2021-10-23
    • 2016-03-10
    • 2016-07-09
    • 2021-07-11
    • 2017-03-14
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多