PostgreSql中的正则表达式匹配

时间:2016-11-11 07:13:02

标签: sql postgresql

我的表格中有一列包含以下值:

'2.190.44.6'
'2.185.36.5'
'2.180.85.8'
'2.180.53.5'
'2.170.49.5'
'2.160.55.8'
'2.145.37.5'

我想只获取最新的值,并且对将来添加的地址值是通用的。

目前以下情况不起作用:

select device from table
where device NOT LIKE '2.1[0-7]%.[0-7]%'

结果应该只有以下数值:

'2.190.44.6'
'2.185.36.5'
'2.180.85.8'
'2.180.53.5'

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

我认为你可以在这里使用substring

SELECT device
FROM yourTable
WHERE substring(device for 4) = '2.18' OR
      substring(device for 4) = '2.19'

有关如何使用Postgres'substring功能的良好资源,请参阅TechOnTheNet

<强>更新

如果您计划将来发布2.0,并且您只想匹配第一个次要版本模式,那么您可以按如下方式修改查询:

SELECT device
FROM yourTable
WHERE substring(device from 3 for 2) = '18' OR
      substring(device from 3 for 2) = '19'