小编Bob*_*ant的帖子

将nvarchar值'test'转换为数据类型int时转换失败

上下文:SQL Server 2008

我有一个表,mytable其中包含两NVARCHARid,title.

id列中的所有数据实际上都是数字的,除了包含值'test'的一行.

我希望得到10到15之间的所有ID,所以我需要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
Run Code Online (Sandbox Code Playgroud)

此查询导致以下错误:

将nvarchar值'test'转换为数据类型int时转换失败.

内部查询使用'test'id值删除行,因此'in'不应包含它.为什么SQL Server仍在尝试转换它?

我错过了什么吗?我怎么能绕过这个?

PS我试过WHERE CAST(in.id AS INTEGER) BETWEEN 10 AND 15但也没用.

sql-server sql-server-2008

14
推荐指数
2
解决办法
6万
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1