替换postgres中特定位置的子串

时间:2017-12-08 05:55:05

标签: postgresql

我有一个表,希望更新查询以更新dob

Web Browser

我想从------------ dob ------------ 19101984 19111984 19071985 19081985 19101985 19121985 删除子字符串到position 5表示结果表中的意思是:

character length of 2

1 个答案:

答案 0 :(得分:1)

使用regex_replace

select regexp_replace(dob::text, '(\d{4})\d{2}(\d{2})', E'\\1\\2')
from your_table;

更新:

update your_table
set dob = regexp_replace(dob, '(\d{4})\d{2}(\d{2})', E'\\1\\2');

这里使用的正则表达式模式是:

(\d{4})\d{2}(\d{2})
 ^^^^        ^^^^     <-- capture groups

分别在第1组和第2组中捕获前四位和后两位数字。然后,我们只需替换第一个和第二个捕获组。

目前尚不清楚dob列是否为文字。如果是数字,那么您应该能够转换为文本并运行上述查询。

enter image description here

Demo