2016-01-28 2 views
-1

Я пытаюсь очистить и дедупировать адреса электронной почты в моей БД. Таким образом, у меня есть что-то похожее на следующее.Ссылка измененного имени столбца из оператора select

select rtrim(ltrim(replace(lower(Email), '"', ''))) 
from Users 
where Email like '%[email protected]_%.__%' 

Моя проблема в том, что когда оператор еще использует неизмененный строку электронной почты, где я хочу его использовать строку электронной почты после замены и наличники были применены.

Примечание: Я применяю намного больше строковых модификаций в своем фактическом коде, но я сократил его, поскольку это не имело значения.

+0

MySQL или MS SQL Server? Не помещайте те продукты, которые не задействованы ... (И мне сложно поверить, что код работает с обоими.) – jarlh

+0

MySQL, спасибо за то, что набрали это. Удален тег сервера – skeletalmonkey

ответ

1

Вы не можете использовать псевдоним столбца в предложении WHERE, за исключением предложения HAVING (из-за расширения, предоставляемого MySQL). Таким образом, вам придется делать это во внешнем запросе, как показано ниже, иначе альтернатива предоставляется в другом ответе.

select NewEmail 
from(
select rtrim(ltrim(replace(lower(Email), '"', ''))) as NewEmail 
from Users) xx 
where NewEmail like '%[email protected]_%.__%' 
+0

Не обязательно, посмотрите на мой ответ. – sagi

+0

Да, вы предоставили альтернативу, когда вы делаете одни и те же манипуляции несколько раз. это не волшебство, я считаю, – Rahul

+0

Дважды, а не несколько раз, и это не тяжелая или сложная манипуляция, так что это не имеет большого значения. Оба запроса будут выполняться в одно и то же время, вы просто сказали: «Вам нужно будет», поэтому я исправил вас :) – sagi

Смежные вопросы