gpt4 book ai didi

php - Mysql正则表达式按数字选择

转载 作者:行者123 更新时间:2023-11-29 01:40:40 25 4
gpt4 key购买 nike

嗨,我在数据库中有一个字段作为 json 字段

table some_table

field| {"number":34,"name":"john"}
field| {"number":60,"name":"mary"}
field| {"number":44,"name":"mark"}

我想查询并选择数字 > 某个值的数据

select from some_table where field regexp (get_number) > 40

这可能吗?


我发现这个例子使正则表达式选择但只匹配数据

SELECT id FROM table_name WHERE field_name REGEXP '"key_name":"([^"]*)key_word([^"]*)"';

但我想在 json 中进行选择,其中一些数字大于...

感谢大家以后的帮助。

最佳答案

首先我要告诉你,在mysql上不能提取regex“captures”,只能“match”

第二,我想告诉你,下面的查询只有在“number”是第一项时才有效

SELECT * FROM some_table WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(field,',',1),':',-1) > 40

这里使用mysql的SUBSTRING_INDEX来获取第一个“,”之前的字符串结果是:{“数字”:34

然后获取最后一个“:”之后的字符串(在本例中,也是第一个)

这将导致:

34

编辑:这是另一个允许其他顺序的版本

SELECT * FROM some_table WHERE SUBSTRING_INDEX(SUBSTRING_INDEX('{"number":34,"name":"john"}','"number":',-1),",",1) > 40

第一次调用成功:34,"name":"john"}第二次调用成功:34

SUBSTRING_INDEX: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index

关于php - Mysql正则表达式按数字选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com