首页 > 解决方案 > 查询中的 SQL Server“将数据类型 varchar 转换为 bigint 时出错”

问题描述

我正在尝试在 SQL Server 中运行以下查询,但出现错误

将数据类型 varchar 转换为 bigint 时出错。

有任何想法吗?

SELECT TOP 1 
    t.tableID, CAST(t.tableNumber AS bigint), i.woodName, i.woodYear  
FROM 
    dbo.table t WITH (NOLOCK) 
INNER JOIN 
    dbo.[identity] i WITH (NOLOCK) ON i.tableID = t.tableID 
WHERE 
    ISNUMERIC(t.tableNumber) = 1 
    AND CAST(t.tableNumber AS bigint) = '1190159';

标签: sqlsql-server

解决方案


改用TRY_CAST()

WHERE TRY_CAST(t.tableNumber AS bigint) = 1190159;

另外,不要将数字与字符串进行比较。

出现问题是因为 SQL Server 不保证表达式求值的顺序。所以CAST()可以在过滤 之前发生ISNUMERIC()


推荐阅读