我正在尝试清理和重复删除数据库中的电子邮件地址。因此,我有类似于以下内容。
select rtrim(ltrim(replace(lower(Email), '"', '')))
from Users
where Email like '%_@_%.__%'
我的问题是where语句仍然使用未修改的电子邮件字符串,我希望它在应用替换和修剪后使用电子邮件字符串。
注意:我在实际代码中应用了更多的字符串修改,但我缩短了它,因为它不相关。
答案 0 :(得分:1)
除了WHERE
子句之外,您不能在HAVING
子句中使用列别名(由于MySQL提供的扩展)。因此,您必须在下面的外部查询中执行此操作,否则在另一个答案中提供替代方法。
select NewEmail
from(
select rtrim(ltrim(replace(lower(Email), '"', ''))) as NewEmail
from Users) xx
where NewEmail like '%_@_%.__%'