集成MySQL函数JSON_SEARCH的Bug



如何在所有值上使用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解析为键、值组合,以创建变量列表的所有组合。

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

编辑:我不能使解决平面到自己的答案…:-)但这是解决了我。

相关内容

  • 没有找到相关文章

最新更新