sql - 查询中的 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';
解决方案
改用TRY_CAST()
:
WHERE TRY_CAST(t.tableNumber AS bigint) = 1190159;
另外,不要将数字与字符串进行比较。
出现问题是因为 SQL Server 不保证表达式求值的顺序。所以CAST()
可以在过滤 之前发生ISNUMERIC()
。
推荐阅读
- c# - 当`List中`T`的属性发生变化时如何实现和触发事件
` 在所属类中 - python - 在python中循环一个protobuff枚举
- java - 创建多线程后无法处理请求
- node.js - 为什么在 Node.js CPU 绑定代码中使用异步模式?
- python - 从函数列表中获取随机函数并调用所选函数
- python - 如何将嵌套字典的所有值转换为字符串?
- javascript - Javascript ToDo 列表删除和完成按钮
- unity3d - 无法在 SceneView 中暂停游戏时旋转骨骼
- python - 用树的森林建模字符串序列
- c++ - 什么是打破 vulkan 以测试调试回调是否设置正确的好方法?