在TSQL中是否有办法在WHERE
子句中使用变量/别名?
Select First_Name as FN from PERSON
Where FN like 'D%'
我问的原因是,如果我有嵌套选择怎么办?我必须把整个嵌套的选择语句再次在我的Where子句过滤吗?
正如许多类似的问题所指出的那样,答案是"不"。解决方案通常是CTE或子查询。这个"limitation"是SQL语言的属性,而不是特定数据库的属性。
SQL Server确实有第三种方法(这就是我回答的原因)。这更适合于复杂的表达式。你的例子不是一个很好的例子,但是你可以使用outer apply
:
select p2.fn
from person p outer apply
(select p.First_Name as FN) p2
where p2.fn like 'D%'
仅当您在From子句中放置"嵌套选择"(这被称为子查询):
select FN
from (select First_Name as FN
from PERSON) z