在where condition中使用Sql server列别名

时间:2012-02-03 06:51:08

标签: sql-server tsql

我正在编写一个sql server查询,其中一列作为表达式,如

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

现在我无法使用Test,我需要写

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

现在表达式(名称+年龄)有时会非常大,所以我不能给它一些别名并使用它

感谢任何帮助,

谢谢

2 个答案:

答案 0 :(得分: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%'

答案 1 :(得分:2)

您可以像这样使用交叉申请

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