我的桌子是,
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查询修改此内容
答案 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
强>