Redshift如何将最后一个octec的IP地址列更新为另一个值

时间:2018-06-15 09:59:26

标签: amazon-redshift

a.  123.12.1 -> 123.12.999
b.  123.12.100.0 -> 123.12.100.999
c.  123.123 -> 123.999

我有一个带有一个IP地址列的Redshift表,如上所述,我使用子串和位置函数嵌套了很多时间来匹配需求,但我想知道是否有其他方法可以做

2 个答案:

答案 0 :(得分:0)

更简洁的方法是使用Python UDF将字符串拆分为点符号,并返回除最后一个之外的所有元素,并附加999。函数的主体在下面(val是参数,看看如何在官方Redshift文档中创建函数)

return '.'.join(val.split('.')[:-1])+'.999'

答案 1 :(得分:0)

无需使用拆分。更新价值的最简单方法是:

update table set ip = regexp_replace(ip, '[.][0-9]{1,3}$','.999');

请参阅redshift regexp_replace function

$字符确保只替换最后一个八位字节。