-1

从 IP 表(1.2.3.4)中提取前两个八位字节并将它们放入另一个表(1.2)的方法是什么?

4

2 回答 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 |

SQLFiddle

如果它们以字符串表示形式存储,那么只需

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 回答