2012-02-03 77 views
3

我寫有一列一個SQL Server查詢像使用SQL Server列別名在條件

Select name , name + age as Test from myTable 
where Test like '%b%'; 

一個表達我現在不能使用測試或者我需要寫

Select name , name + age as Test from myTable 
where (name + age) like '%b%'; 

現在表達(姓名+年齡)可能會非常大有時如此不能我給它一些別名和使用它

任何幫助表示讚賞,

謝謝

+0

我可以知道你想這麼做的原因是什麼?您想要查找符合過濾條件的名稱或年齡欄中的任何記錄嗎? – 2012-02-03 06:55:18

+0

@ThitLwinOo因爲有時我的表情太大,所以我想使用一些alist,所以我把這個問題放在這裏,以便我可能知道這是否可能 – Moons 2012-02-03 06:58:18

+0

好的,我提供了一個答案,請嘗試。讓我知道你想要什麼都可以。 – 2012-02-03 07:01:38

回答

6

這個怎麼樣的方式..

select name, Test 
(
Select name , (name + age) as Test from myTable 
) t 
where Test like '%b%' 

查詢需要修改,因爲它有語法錯誤:

所以應該這樣寫

select name from 
(
Select name , (name + age) as Test from myTable 
) t 
where Test like '%b%' 
+0

當使用查詢 – Moons 2012-02-03 07:24:52

2

你可以用這樣的交叉申請

select M.name , T.Test 
from myTable as M 
    cross apply(select name + age) as T(Test) 
where T.Test like '%b%'; 
+1

+1進行交叉應用時,出現語法錯誤。但是,與Thit的答案相比,這件事情的代價更小。 – 2012-02-03 07:15:49

+1

@AmarPalsapure - 我所做的測試沒有顯示查詢計劃或執行時間的任何差異。 – 2012-02-03 07:46:10

+0

在執行計劃中,增加了「Compute Scalar」步驟,它增加了CPU成本。這不是很重要,但可能是因爲我的數據庫規模很小。 – 2012-02-03 07:48:38