您可以使用REPLACE
兩次,SUBSTR
刪除前導0
SELECT ipv6,
SUBSTR(REPLACE(REPLACE(':' || ipv6, ':00', ':'),':0', ':'),2) AS result
FROM tab;
SqlFiddleDemo
演示使用MySQL
,因爲Oracle
沒有響應。唯一的變化是字符串連接。
輸出:
╔═════════════════════════════════════════════╦════════════════════════════╗
║ ipv6 ║ result ║
╠═════════════════════════════════════════════╬════════════════════════════╣
║ 2001:04E8:0000:4001:0000:0000:0000:0000/64 ║ 2001:4E8:0:4001:0:0:0:0/64 ║
║ 0000:0001:0012:0123:1234:0000:0000:0000/64 ║ 0:1:12:123:1234:0:0:0/64 ║
║ 0001:04E8:0000:4001:0000:0000:0000:0000/64 ║ 1:4E8:0:4001:0:0:0:0/64 ║
║ 0012:04E8:0000:4001:0000:0000:0000:0000/64 ║ 12:4E8:0:4001:0:0:0:0/64 ║
║ 0123:04E8:0000:4001:0000:0000:0000:0000/64 ║ 123:4E8:0:4001:0:0:0:0/64 ║
╚═════════════════════════════════════════════╩════════════════════════════╝
哪個DBMS您使用的?替換/正則表達式功能在產品之間往往有點不同。 – jarlh
oracle數據庫 – user1933888