【问题标题】:sql: prepend/append something to email fieldsql:在电子邮件字段中添加/附加内容
【发布时间】:2017-05-13 18:04:12
【问题描述】:
我经常导入生产数据库的副本,替换我的开发数据库。
但是,在开发过程中,我不希望意外地向任何生产用户发送电子邮件。 (他们的电子邮件存储在users 表的email 列中)
我怎样才能更新所有的电子邮件地址,这样如果我不小心给它们发了电子邮件,它会转到nowhere
如果原始电子邮件以某种方式嵌入伪造的电子邮件中也会很好。
【问题讨论】:
标签:
sql
postgresql
obfuscation
email-address
【解决方案1】:
假设:电子邮件列包含一封电子邮件(没有逗号,没有猴子黑客,隐藏命令 - 只是一封电子邮件)。那么:
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)