Как отфильтровать запрос с пустым фиктивным столбцом в SQL?

0

У меня есть ситуация, когда нужно сравнивать пустое поле фиктивного типа.

SELECT id, name, contact, landline, '' fax
FROM table1 
WHERE contact LIKE '%123%'
   OR landline LIKE '%123%'
   OR fax LIKE '%123%'

После выполнения он дает ошибку, например:

Неизвестный столбец "факс" в разделе "where"

Является ли это возможным?

Теги:

2 ответа

2
Лучший ответ

Это невозможно; вы не можете использовать псевдонимы, определенные в том же SELECT в WHERE.

MySQL расширяет использование предложения HAVING, поэтому вы можете переместить условия в HAVING:

SELECT id, name, contact, landline, '' as fax
FROM table1
HAVING contact LIKE '%123%' OR landline LIKE '%123%' OR fax LIKE '%123%'
1

Оберните исходный запрос в производную таблицу (подзапрос). Примените условия к его результату:

select id, name, contact, landline, fax
from
(
    SELECT id, name, contact, landline, '' fax
    FROM table1 
) dt
WHERE contact LIKE '%123%'
   OR landline LIKE '%123%'
   OR fax LIKE '%123%'

ANSI SQL-совместимое решение, будет работать с большинством продуктов dbms.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню