[英]Mysql - Comparing variable with stored wildcard
我在 Mysql 中有一個表,其中包含存儲為通配符的 IP 范圍。 例如:52.% 代表所有以 52 開頭的 IP。或者例如:65.154.226.% 代表所有以 65.154.226 開頭的 IP。
對於原始用例,它按預期工作。 但是我現在試圖通過實際查詢存儲為通配符的數據來切換它。 我想知道我是否輸入了數據庫中存在的 IP(作為通配符)。 示例查詢:
SELECT * FROM IpList WHERE IP LIKE '52.1.1.1';
這可以在一個查詢中實現嗎? 如果是這樣,有人可以指出我正確的方向嗎?
非常感謝!
您可以使用REGEXP
和substring_index
來實現這一點。
詢問 -
select *
from IpList
where IP regexp concat(substring_index("52.1.1.1", ".", 1), ".%.%.%")
or IP regexp concat(substring_index("52.1.1.1", ".", 2), ".%.%")
or IP regexp concat(substring_index("52.1.1.1", ".", 3), ".%")
or IP regexp "52.1.1.1";
它將為您提供IpList
表中的記錄列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.