SQL Server从查询“将数据类型varchar转换为bigint时出错”

SQL Server从查询“将数据类型varchar转换为bigint时出错”,sql,sql-server,Sql,Sql Server,我试图在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.tab

我试图在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';
改用TRY_CAST:

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

出现此问题的原因是SQL Server不保证表达式的求值顺序。因此,转换可以在对ISNUMERIC进行筛选之前进行。

请改用TRY\u CAST:

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


出现此问题的原因是SQL Server不保证表达式的求值顺序。因此,转换可能会在过滤ISNUMERIC之前发生。

如果没有样本数据,很难说问题出在哪里。也就是说,您可以使用try\u convert或try\u cast。他们将返回NULL而不是抛出错误。没有示例数据,很难说问题出在哪里。也就是说,您可以使用try\u convert或try\u cast。它们将返回NULL,而不是抛出错误。
WHERE TRY_CAST(t.tableNumber AS bigint) = 1190159;