您好我有新的任务。我有一个表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]
任何帮助都非常感激。
答案 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
我知道它不是正则表达式,但可能对某人有用,所以我决定将它粘贴在这里:)