上下文:sql Server 2008
我有一个表mytable,其中包含两个NVARCHAR列id,标题.
id列中的所有数据实际上是数字的,除了包含值“test”的一行.
我想得到所有的ids在10和15之间,所以我需要sql Server将id列值转换为INTEGER.
我使用ISNUMERIC(id)= 1来消除非数值,但sql Server与此查询相当奇怪.
SELECT in.* FROM (SELECT id,title FROM mytable WHERE ISNUMERIC(id) = 1) in WHERE in.id BETWEEN 10 AND 15
Conversion Failed when converting the nvarchar value ‘test’ to
data type int.
内部查询消除了具有’test’id值的行,所以’in’不应该包含它.为什么sql Server仍然尝试转换它?
我错过了什么吗?我该怎么办?
附:我尝试在10和15之间的WHERE CAST(in.id AS INTEGER),但是也没有工作.