如何在所有值上使用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,它为我解决了这个问题。
编辑:我不能使解决平面到自己的答案…:-)但这是解决了我。