Я понял, как использовать псевдоним в инструкции where.
Пример:
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable
WHERE Col1 = 'MySearch'
Я использую MSSQL 2005
Я понял, как использовать псевдоним в инструкции where.
Пример:
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable
WHERE Col1 = 'MySearch'
Я использую MSSQL 2005
Невозможно, но вы можете сделать следующее:
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable
WHERE SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) = 'MySearch'
Не требуется никаких подзапросов или хаков
Вы можете использовать "наличие" вместо "where".
SELECT
SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM
MyTable
HAVING
Col1 = 'MySearch'
Выполнение "where" после выполнения запроса. Будьте осторожны, чтобы использовать его в правильных условиях, чтобы не было проблем с производительностью.
Использовать подзапрос:
SELECT *
FROM
(SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable)
WHERE Col1 = 'MySearch'
Вы можете сделать это:
SELECT Col1
FROM ( SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 ) AS x
WHERE Col1 = 'MySearch'
SELECT * FROM (
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable
)
WHERE Col1 = 'MySearch'
(Я знаю, что это работает в Oracle, я считаю, что это стандартный SQL и будет работать в MSSQL.)
Я думаю, что это невозможно, но, возможно, вы можете взглянуть на выражения Common Table над SQL 2005
Вот так:
WITH MyCTE( Col1) AS
(
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable
)
SELECT *
FROM MyCTE
WHERE Col1 = 'MySearch'
используйте представление или производную таблицу.
Используя производную таблицу, ваш пример будет выглядеть так:
select col1
from
(SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable)
where col1='Mysearch'
Собственно, использование псевдонима не сделает ваш запрос более быстрым, поскольку оптимизатор SQL не так глуп, как вы думаете, поэтому я бы просто повторил выражение SUBSTRING еще раз.
Ответ: вы не можете - вы можете это сделать
SELECT
SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM
MyTable
WHERE
SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) = 'MySearch'