MySQL中的REGEXP返回不需要的值

时间:2010-06-24 06:49:08

标签: java regex mysql

我在Mysql中使用REGEX时遇到问题

我在这个数据库中有oid值

id - >值

1.3.6.1.4.1 - >价值a

1.3.6.1.4.1.2499.1.1.2.1.1.1.1.1 - >价值b

1.3.6.1.4.1.2499 - >价值c

我的目标是 1.获得单一的oid&使用我在sql语句中输入的特定oid的值 2.如果没有特定值,那么它应该按编号反转oid编号,直到找到最新值

例如 如果我使用     [从tablename中选择id,其中'1.3.6.1.4.1.2499.1.1.2.1.1.1.1.1'REGEXP oid ]     它应该只返回1.3.6.1.4.1.2499.1.1.2.1.1.1.1.1但上面的sql将返回所有结果

如果我使用     [从tablename中选择id,其中'1.3.6.1.4.1.24999999.5'REGEXP oid ]     它应仅返回1.3.6.1.4.1但返回1.3.6.1.4.1和1.3.6.1.4.1.2499

如果我使用     从tablename中选择id,其中'1.3.6.1.4.1.2499.1.1.2.1.1.1.1.100'REGEXP oid     它应仅返回1.3.6.1.4.1.2499但返回所有ID

我对这个REGEXP并不熟悉。任何人都可以帮我解决这个问题。 谢谢

2 个答案:

答案 0 :(得分:0)

使用MySQL,您应该使用field REGEXP value,如下所示:

select id from tablename where oid REGEXP '1.3.6.1.4.1.2499.1.1.2.1.1.1.1.1'
必须使用.转义

\ 要匹配整行,请使用^$

select id from tablename where oid REGEXP '^1\.3\.6\.1\.4\.1\.2499\.1\.1\.2\.1\.1\.1\.1\.1$'

我不明白为什么你可以在REGEXP选择时使用LIKE,因为你没有用正则表达式搜索。

答案 1 :(得分:0)

我不认为正则表达式是这项工作的正确工具。

相反,我会循环输入字符串,将其视为以句点分隔的列表。

将列表与oid匹配。如果零匹配,则删除最后一个列表元素。重复。