簡體   English   中英

Mysql - 將變量與存儲的通配符進行比較

[英]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';

這可以在一個查詢中實現嗎? 如果是這樣,有人可以指出我正確的方向嗎?

非常感謝!

您可以使用REGEXPsubstring_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM