mysql 取IP段比如:192.168.100.10
取 192.168.10019.16.200.10
取 19.16.200
谢谢
对的马上给分

解决方案 »

  1.   

    mysql> set @ip = '192.168.100.10';
    Query OK, 0 rows affected (0.00 sec)mysql> select substring_index(@ip,'.',3);
    +----------------------------+
    | substring_index(@ip,'.',3) |
    +----------------------------+
    | 192.168.100                |
    +----------------------------+
    1 row in set (0.00 sec)
      

  2.   

    SELECT
        SUBSTRING_INDEX(IP,'.',3) AS IP
    FROM tb;
    -- 看看帮助 SUBSTRING_INDEX
      

  3.   

    如果格式格式:
    select SUBSTRING_INDEX('192.168.100.10','.',-1),
    SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-2),'.',1),
    SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-3),'.',1),
    SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-4),'.',1)否则
    建立临时表,字段ID,内容从1-100
    用SQL语句解决
      

  4.   

    三楼方法不对,直接用一楼就可以了。
    不过 19.16.200.10 的网络ID是 19.0.0.0 这是个A类网址。
      

  5.   


    如果考虑A,B,C的话,把一楼的改成如下即可。mysql> select ip,
        -> SUBSTRING_INDEX(IP,'.',CASE floor(SUBSTRING_INDEX(IP,'.',1)/64)
        ->  WHEN 0 THEN 1
        ->  WHEN 1 THEN 1
        ->  WHEN 2 THEN 2
        ->  WHEN 3 THEN 3
        -> END) AS NETID
        -> from tip;
    +----------------+-------------+
    | ip             | NETID       |
    +----------------+-------------+
    | 1.1.1.1        | 1           |
    | 127.1.1.1      | 127         |
    | 128.1.1.1      | 128.1       |
    | 191.1.1.1      | 191.1       |
    | 192.1.1.1      | 192.1.1     |
    | 223.1.1.1      | 223.1.1     |
    | 192.168.100.10 | 192.168.100 |
    | 19.16.200.10   | 19          |
    +----------------+-------------+
    8 rows in set (0.00 sec)mysql>
      

  6.   

    呵呵,楼主是要取出3位
    select SUBSTRING_INDEX('192.168.100.10','.',3)