a. 123.12.1 -> 123.12.999
b. 123.12.100.0 -> 123.12.100.999
c. 123.123 -> 123.999
我有一个带有一个IP地址列的Redshift表,如上所述,我使用子串和位置函数嵌套了很多时间来匹配需求,但我想知道是否有其他方法可以做
答案 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
$
字符确保只替换最后一个八位字节。