我有 SQL Server 2008 R2,Windows 7 操作系统。
在服务器中,我有一个con1
通过以下 SQL 语句创建的表。
CREATE TABLE [dbo].[con1](
[digit_str] [nvarchar](50) NULL
) ON [PRIMARY]
在con1
表中,我有这些值:
digit_str
----------------
1
1
2
3
4
5
1.
我确实对数据库执行了以下 SQL 语句:
SELECT t1.digit FROM
(
select CAST(digit_str as int) as digit from con1 where RIGHT(digit_str,1) <> '.'
) as t1
where t1.digit <> 1
服务器给了我以下错误信息:
转换 nvarchar 值“1”时转换失败。为数据类型 int。
我以为我的内部 SQL 先执行并创建了一个临时表t1
,所以1.
不包含在表中t1
,然后 SQL 解析器将用于where t1.digit <> 1
过滤临时表t1
。
但是上面似乎不对,所以有人解释一下上面SQL的执行顺序吗?