在PostgreSQL中支持正则替换函数regexp_replace,可以处理replace函数无法完成的情况。比如,在GeoNetwork中若要统一替换一批数据的发布时间,其数据是存储为xml格式,发布时间不统一,可以采用这样的多级SQL查询来实现:
update metadata set data=regexp_replace(data,'<refDate>.*<\/refDate>','<refDate>2013-6-16</refDate>') where id in ( select t.id from (select id,(regexp_matches(data,'<resTitle>(.*)</resTitle>'))[1] as title from metadata) as t where t.title like '黑河生态水文遥感试验%' )
说明:
1. regexp_replace替换字符串
2. regexp_matches限制处理范围
发表回复