2013-04-30 59 views

回答

2

不能使用這是在同一水平WHERE條款給出的ALIAS(AS)TOTALNAME。

你有兩個選擇:

  • 通過使用表達式直接

查詢:

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命令如下:

  • FROM子句
  • WHERE子句
  • GROUP BY子句
  • HAVING子句
  • SELECT子句
  • ORDER BY子句

之所以不能直接使用它是因爲WHERE子句中正在創建ALIASSELECT語句之前先執行。

2

不能直接,要麼使用派生表,或者您可以使用一個CTE(SQL服務器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%'