别名列的 Where 子句

dub*_*ech 4 sql-server-2008 sql-server

我有一个从列中解析字符串值的查询:

SELECT left(DateTimeSent, 17) AS timesent FROM allog_07_11_e query1 
Run Code Online (Sandbox Code Playgroud)

当我做:

SELECT left(DateTimeSent, 17) AS timesent FROM allog_07_11_e query1.timesent != '0'
Run Code Online (Sandbox Code Playgroud)

我得到:

Msg 207, Level 16, State 1, Line 1
Invalid column name 'timesent'.
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?

Tho*_*ger 5

您不能在WHERE子句中引用别名。你必须做这样的事情:

select left(DateTimeSent, 17) as timesent
from allog_07_11_e
where left(DateTimeSent, 17) <> '0'
Run Code Online (Sandbox Code Playgroud)

同样,您也可以使用子查询:

select *
from
(
    select left(DateTimeSent, 17) as timesent
    from allog_07_11_e
) a
where timesent <> '0'
Run Code Online (Sandbox Code Playgroud)