我在Mysql中使用REGEX时遇到问题
我在这个数据库中有oid值
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并不熟悉。任何人都可以帮我解决这个问题。 谢谢
答案 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匹配。如果零匹配,则删除最后一个列表元素。重复。