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