在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.1->值b
1.3.6.1.4.1.2499->值c
我的反对者是
一。使用我放入sql语句中的特定oid获取单个oid值
2。如果没有特定的值,那么它应该按数字反转oid号,直到找到newrest值
例如
如果我用
[从tablename中选择id,其中'1.3.6.1.4.1.2499.1.1.2.1.1.1.1.1.1.1'REGEXP oid]
它应该只返回1.3.6.1.4.1.2499.1.1.2.1.1.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.1.100'REGEXP oid
它应该只返回1.3.6.1.4.1.2499,但它返回所有id
我不太熟悉这个REGEXP。有谁能帮我解决这个问题吗。
谢谢你
最佳答案
对于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
,因为您不通过正则表达式进行搜索。