读书人

cast化解决方法

发布时间: 2012-03-07 09:13:51 作者: rapoo

cast化
(select CARCONDITION.CONDITIONDIV from CARCONDITION
where (CAST(SUBSTRING(cast(CARCONDITION.RENTSTARTTIME as nvarchar),8,4)as bigint) <1159
or CAST(SUBSTRING(cast(CARCONDITION.RENTSTARTTIME as nvarchar),8,4)as bigint) =1159)


and (CAST(SUBSTRING(cast(CARCONDITION.RENTSTARTTIME as nvarchar),8,4)as bigint)>0
or CAST(SUBSTRING(cast(CARCONDITION.RENTSTARTTIME as nvarchar),8,4)as bigint) =0)
)as AM
and前面的就是後面的比值(1159 和0 不一)
但是下面的(=0就是最後一)
求解!

[解决办法]

探讨
Msg 512, Level 16, State 1, Line 1
サブクエリは数のを返しました。サブクエリが =、!=、<、<=、>、>= の後にく合や、サブクエリが 1 つの式として使われる合は数のは可されません。

[解决办法]
你的这段查询是没什么错误的,可能是你把它作为子查询,而把查询结果作为主查询 select 列表中的一员.
原来用一句查,可能只有一个结果,而加了 or 以后,会出来多个结果,因此出错.

建议:
单独执行
select CARCONDITION.COND
....
) =0)
看有几条记录,如果有多条记录,是否可以考虑把它作为一个子查询与原来的查询连接而获得结果.
[解决办法]
子查询是一个集合 应该用IN 而不能直接用等于号。

读书人网 >SQL Server

热点推荐