我正在使用 Mysql 触发器来对我的数据库执行某些操作。在任何事情之前,我想检查我的配置表中的 json_encode 字符串中是否存在一个值,然后继续运行触发器。 我的配置表由 php 脚本处理,如下所示:
-------------------------------------------
| config_name | config_value |
-------------------------------------------
| target_id | ["1","16","18","22","37"] |
-------------------------------------------
在 php 中我们可以使用: 如果 in_array(json_decode(config_value)) 和 ...
但我的问题出在不支持 in_array 和 json_decode 的 Mysql 语法中
如何检查我的值是否存在于 Mysql 触发器的“配置值”中?
最佳答案
如何解决这个问题
如果您将 JSON 存储在 mysql 中,请确保升级到 mysql 5.7,然后您可以使用 JSON functions 的范围。可用的。在您的特定情况下,您可以这样做
SELECT * FROM my_table WHERE JSON_SEARCH(config_value,"one", "17") IS NOT NULL;
你绝对应该做的事
您的数据有问题。如果你发现你总是在搜索一个 JSON 字段,那真正意味着你的表应该被规范化。
更新:第 2 部分,根据@Sammitch 的建议更改了标题
关于php - 检查mysql中的json编码数组中是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132714/