【发布时间】:2013-04-30 15:33:17
【问题描述】:
如何在 where 中使用 (AS) TOTALNAME
SELECT
*, CITY + ' / ' + NAME AS TOTALNAME
FROM
FARKETMEZ
WHERE
TOTALNAME like '%TURKEY%'
【问题讨论】:
-
同级where子句不能使用列别名
标签: sql-server where
如何在 where 中使用 (AS) TOTALNAME
SELECT
*, CITY + ' / ' + NAME AS TOTALNAME
FROM
FARKETMEZ
WHERE
TOTALNAME like '%TURKEY%'
【问题讨论】:
标签: sql-server where
您不能使用与WHERE 子句处于同一级别的ALIAS。
你有两个选择:
查询:
SELECT *, CITY + ' / ' + NAME AS TOTALNAME
FROM FARKETMEZ
WHERE TOTALNAME like '%TURKEY%'
查询:
SELECT *
FROM
( SELECT *, CITY + ' / ' + NAME AS TOTALNAME
FROM FARKETMEZ
) a
WHERE TOTALNAME like '%TURKEY%'
SQL操作顺序如下:
之所以不能直接使用,是因为WHERE子句在创建ALIAS的SELECT语句之前先执行。
【讨论】:
您不能直接使用派生表,也可以使用 CTE (SQL Server 2005+):
派生表:
SELECT *
FROM ( SELECT
*, CITY + ' / ' + NAME AS TOTALNAME
FROM
FARKETMEZ
) AS T
WHERE TOTALNAME like '%TURKEY%'
CTE:
;WITH CTE AS
(
SELECT
*, CITY + ' / ' + NAME AS TOTALNAME
FROM
FARKETMEZ
)
SELECT *
FROM CTE
WHERE TOTALNAME like '%TURKEY%'
【讨论】: