Amazon redshift 红移如何将IP地址列的最后一个八位字节更新为另一个值

Amazon redshift 红移如何将IP地址列的最后一个八位字节更新为另一个值,amazon-redshift,Amazon Redshift,我有一个带有一个IP地址列的红移表,如上所述,我多次使用嵌套的substring和position函数来匹配要求,但我想了解是否还有其他方法可以执行更简洁的方法是使用Python UDF,它按点符号拆分字符串,并返回除最后一个元素以外的所有元素,随附999。函数主体如下(val是参数,看看如何在官方红移文档中创建函数) 不需要使用拆分。更新值的最简单方法是: return '.'.join(val.split('.')[:-1])+'.999' 看 $字符确保只替换最后一个八位字节。如果第三个

我有一个带有一个IP地址列的红移表,如上所述,我多次使用嵌套的substring和position函数来匹配要求,但我想了解是否还有其他方法可以执行

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


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

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


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

如果第三个点存在,则子字符串获取xxx.xxx.xxx+'.999',如果第三个点不存在,且第二个点存在,则子字符串获取xxx.xxx+'.999',如果第二个点不存在,则第一个点存在,则获取xxx+ '.999'
return '.'.join(val.split('.')[:-1])+'.999'
update table set ip = regexp_replace(ip, '[.][0-9]{1,3}$','.999');