这样做的最好方法是什么?mysql where IN语句使用正则表达式?
select * from myTable where hostname IN ('host1-%', 'host2-%', 'host3-%')
其中主机名有时回来为完全合格的域名或简单,只是主机1
这样做的最好方法是什么?mysql where IN语句使用正则表达式?
select * from myTable where hostname IN ('host1-%', 'host2-%', 'host3-%')
其中主机名有时回来为完全合格的域名或简单,只是主机1
为了增加PaulF的回答,你可能需要结合使用LIKE
和REGEXP
,例如
SELECT * FROM myTable
WHERE hostname LIKE 'host%' AND hostname REGEXP '^host[1-3]-'
这是因为处理REGEXP
时,MySQL不会使用索引的,但是当图案具有恒定的前缀,它会用它LIKE
。因此,如果在hostname
列中有索引,则将使用索引来缩小到hostXXX
,然后只需在这些行上执行正则表达式匹配。
'其中hostname LIKE 'host1-%' 或主机名LIKE '%host2-' 或主机名LIKE '主机3 - %'' – RiggsFolly