You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL实现替换IP地址最后一组数字及IP:port末尾数字为*

处理MySQL中IP地址的两种替换需求

我来帮你搞定这两个MySQL字符串处理的需求,分两种场景给你具体的SQL写法:

一、单纯替换IP地址的最后一组数字

如果你的字段里是纯IPv4地址(比如192.168.1.100),需要把最后一段数字替换成*或者其他固定值,可以用SUBSTRING_INDEX函数拆分IP的前三段,再拼接上新的结尾:

替换为*的写法:

SELECT 
  CONCAT(SUBSTRING_INDEX(ip_column, '.', 3), '.*') AS masked_ip
FROM your_table;

替换为固定数字(比如0)的写法:

SELECT 
  CONCAT(SUBSTRING_INDEX(ip_column, '.', 3), '.0') AS masked_ip
FROM your_table;

SUBSTRING_INDEX(ip_column, '.', 3)会提取出IP的前三个分段(比如192.168.1),再拼接上你想要的结尾即可。


二、处理IP:port格式的字符串

对于带端口的格式(比如192.168.1.1:2000),需要保留端口部分,只把IP的最后一段换成*,可以分两步拆分字符串:先提取IP部分处理,再拼回端口:

SELECT 
  CONCAT(
    -- 提取IP部分的前三个分段,拼接上.*
    SUBSTRING_INDEX(SUBSTRING_INDEX(ip_port_column, ':', 1), '.', 3), 
    '.*:', 
    -- 提取端口部分
    SUBSTRING_INDEX(ip_port_column, ':', -1)
  ) AS masked_ip_port
FROM your_table;

额外提示:过滤非标准格式

如果你的表中存在不符合IP:port格式的行,可以用正则表达式先过滤,避免处理出错:

SELECT 
  CONCAT(
    SUBSTRING_INDEX(SUBSTRING_INDEX(ip_port_column, ':', 1), '.', 3), 
    '.*:', 
    SUBSTRING_INDEX(ip_port_column, ':', -1)
  ) AS masked_ip_port
FROM your_table
WHERE ip_port_column REGEXP '^([0-9]{1,3}\\.){3}[0-9]{1,3}:[0-9]+$';

这个正则会匹配标准的IPv4加端口的格式,确保只处理有效数据。

内容的提问来源于stack exchange,提问作者jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:40:19