Thu*_*der 0 sql t-sql sql-server string
我有一张简单的桌子
CREATE TABLE a(
id int IDENTITY(1,1) NOT NULL,
x varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
我发现以下查询有效
select cast (id as varchar(3))+cast (x as varchar(3)) c from a
where cast (id as varchar(3))+cast (x as varchar(3))='1a'
Run Code Online (Sandbox Code Playgroud)
但这不起作用
select cast (id as varchar(3))+cast (x as varchar(3)) c from a
where c='1a'
Run Code Online (Sandbox Code Playgroud)
有人知道那是为什么吗?请不要因为某些原因我不想使用
where id=1 and x ='a'
Run Code Online (Sandbox Code Playgroud)
因为WHERE子句中的表达式被计算为在表达式之前限制行,所以在select-list中计算别名.
这是一个解决方法:
select aprime.*
from (select cast (id as varchar(3))+cast (x as varchar(3)) c from a) aprime
where aprime.c='1a';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1595 次 |
| 最近记录: |