我想以给定的格式

时间:2016-06-25 18:00:02

标签: sql

我的桌子是,

MACHINE              IP_ADDRESS
-------------------- ------------
1                    10.0.12.43
2                    10.10.86.43
3                    34.10.86.43

我想以下列形式修改IP_ADDRESS列,

MACHINE              IP_ADDRESS
-------------------- ------------
1                    10012.43
2                    101086.43
3                    341086.43

如何使用sql查询修改此内容

1 个答案:

答案 0 :(得分:0)

如果您使用MySQL,可以使用:

SELECT *,
   CONCAT(REPLACE(SUBSTRING_INDEX(IP_ADDRESS,'.', 3),'.','')
          ,'.',SUBSTRING_INDEX(IP_ADDRESS,'.', -1)) AS result
FROM tab;

SqlFiddleDemo

输出:

╔══════════╦══════════════╦═══════════╗
║ MACHINE  ║ IP_ADDRESS   ║  result   ║
╠══════════╬══════════════╬═══════════╣
║       1  ║ 10.0.12.43   ║  10012.43 ║
║       2  ║ 10.10.86.43  ║ 101086.43 ║
║       3  ║ 34.10.86.43  ║ 341086.43 ║
╚══════════╩══════════════╩═══════════╝

另一种有趣的方法是只使用基本的字符串操作:

SELECT *,
 CONCAT(
   LEFT(IP_ADDRESS, LENGTH(IP_ADDRESS) - 
                    LENGTH(TRIM(RIGHT(REPLACE(IP_ADDRESS, '.', 
                           REPEAT(' ',LENGTH(IP_ADDRESS)))
                          ,LENGTH(IP_ADDRESS))))-1) 
    ,'.',       
   TRIM(RIGHT(REPLACE(IP_ADDRESS, '.', REPEAT(' ',LENGTH(IP_ADDRESS)))
        ,LENGTH(IP_ADDRESS)))
  ) AS result
FROM tab

SqlFiddleDemo2