sql: prepend/append 有事要发邮件字段

sql: prepend/append something to email field

我经常导入生产数据库的副本,替换我的开发数据库。

但是,在开发过程中,我不想不小心给任何生产用户发送电子邮件。 (他们的电子邮件存储在 users table 的 email 列中)

我怎样才能更新所有的电子邮件地址,这样如果我不小心给他们发了电子邮件,它就会转到 nowhere

如果原始电子邮件以某种方式嵌入到伪造的电子邮件中也很好。

给定:电子邮件列包含一封电子邮件(没有逗号,没有猴子黑客,隐藏命令 - 只是一封电子邮件)。那么:

update users set email=email||'.fail';

将更新所有电子邮件,在电子邮件不为空的末尾添加 .fail,如果为空,它将保持不变。要还原,运行:

update users set email=substring(email,1,length(email)-5) 
  where substring(email from '.....$') = '.fail';

数据集示例:

t=# with users(email) as (values('pop@pop.pop'||'.fail'),(null))
select substring(email,1,length(email)-5) from users where substring(email from '.....$') = '.fail';
  substring
-------------
 pop@pop.pop
(1 row)