MYSQL正则表达式查询以检索IP范围

时间:2017-09-18 09:19:24

标签: mysql regex

您好我有新的任务。我有一个表IPsource存储IP范围。例如

IPRange(columnType -- VarChar) 
10.25.23.[1-36]
10.25.23.[70-198]
47.26.23.[1-255]

Mysql查询输入将是这个

select * from IPsource where IPRange= '10.25.23.32'  

然后它应该选择记录10.25.23.[1-36]

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

然后您可以使用RLIKE

SELECT * FROM IPsource WHERE IPRange RLIKE '^10\\.25\\.23\\.(([0-2]*[1-9]*)|(3[1-6]))$'

答案 1 :(得分:0)

您可以使用substring_index而不是regex。这将返回1,1,0,0:

select
substring_index('12.34.56.78', '.', 1) between 10 and 13,
substring_index(substring_index('12.34.56.78', '.', 2), '.', -1) between 30 and 34,
substring_index(substring_index('12.34.56.78', '.', 3), '.', -1) between 50 and 51,
substring_index(substring_index('12.34.56.78', '.', 4), '.', -1) between 10 and 20

我知道它不是正则表达式,但可能对某人有用,所以我决定将它粘贴在这里:)