例如我們現在要在一個表中查出 ip 在 192.168.1.3 到 192.168.1.20 之間的 ip 地址,我們首先想到的就是通過字符串的比較來獲取查找結果,但是如果我們通過這種方式來查找,結果集將為空,原因在於字符串的比較是一個字符一個字符的比較,當對應字符相同時,就比較下一個,直到遇到能區分大小的字符,才停止比較,后面的字符也將忽略。
如果通過字符串的比較就會查出空集,因為前者已經比后者大了。
我們可以通過 INET_ATON(IP) 函數把 ip 轉換為數字,然后在進行比較,這樣就可以得出我們需要的結果:
select * from ip_table where inet_aton(ip) > inet_aton('192.168.1.3') and inet_aton(ip) < inet_aton('192.168.1.20');
