Mysql 正则表达式选择按编号

标签: json MySQL PHP
发布时间: 2017/1/9 21:29:48
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

嘿伙计我有数据库中的字段作为 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 里面选择一些里面是比大...

谢谢你未来的帮助。

解决方法 1:

首先,我想告诉你你不能提取正则表达式"捕获"对 mysql,你只能"匹配"

第二,我想要告诉你是否"数量"的第一项下面的查询只会起作用

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,"名称":"约翰"} 第二次调用使它︰ 34

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

官方微信
官方QQ群
31647020