从 IP 表(1.2.3.4)中提取前两个八位字节并将它们放入另一个表(1.2)的方法是什么?
问问题
94 次
2 回答
1
那是你要找的吗?
如果 IP 存储为整数
SELECT ip, SUBSTRING_INDEX(ip, '.', 2) class
FROM
(
SELECT INET_NTOA(167773449) ip
) t
输出
| IP | CLASS |
--------------------
| 10.0.5.9 | 10.0 |
如果它们以字符串表示形式存储,那么只需
SELECT ip, SUBSTRING_INDEX(ip, '.', 2) class
FROM ...
于 2013-05-23T05:52:15.707 回答
0
您必须编写如下用户定义的函数 CREATE FUNCTION SPLIT_STR( x VARCHAR(255), delim VARCHAR(12), pos INT ) RETURNS VARCHAR(255) RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH( SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ''); 然后运行查询 SELECT SPLIT_STR(ip, '.', 1) as first, SPLIT_STR(ip, '.', 2) as second FROM iptable;
于 2013-05-23T05:51:56.747 回答