我有SQL服务器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的执行顺序?