我有问题,我的表'ip_address'有4个字段:
- id_ip
- client_id
- client_ip
- mac_address
我添加了一个名为'router'的新字段,我需要填写它,因为我有800行手动非常难,是否有可能在phpMyAdmin的某种oneliner中执行此操作?
'router'通常是x.y.z.1,其中x.y.z是字段'client_ip'的第一个八位字节
示例行:
1; 8001; 10.3.8.2 ; 00:00:00:00:00:AA; 10.3.8。的 1
答案 0 :(得分:4)
update ip_address
set router = concat(substring_index(client_ip,'.',3), '.1');
请参阅http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index
答案 1 :(得分:0)
您可以在此处使用mysql的SUBSTRING_INDEX函数来获取前3个八位字节。此查询将填充您的新路由器字段,方法是尝试使用client_ip字段中的前3个八位字节,如您所指定的那样,假设它们以“。”分隔。字符。您可能需要在运行之前考虑IPv6,但假设一切都是IPv4,请转到:
你应该检查这是否能满足你的需要:
SELECT client_ip,SUBSTRING_INDEX(client_ip,'。',3)FROM ip_address
这将更新路由器字段 UPDATE ip_address SET router = SUBSTRING_INDEX(client_ip,'。',3)
编辑:我显然太慢了:)从你的评论中,只需在结尾处连接'.1':UPDATE ip_address SET router = CONCAT(SUBSTRING_INDEX(client_ip,'。',3),'。1')