在MySQL中拆分和连接字符串

时间:2012-03-19 22:09:12

标签: mysql string

我有问题,我的表'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

2 个答案:

答案 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')