sql - SQL ISNUMERIC 返回奇数结果
问题描述
所以我有这个查询:
SELECT
*
FROM
(SELECT * FROM PE_ProductInstance WHERE ISNUMERIC(SerialStart) = 1) p
where
CAST(SerialStart AS int) < 8174
理论上,子查询应该过滤掉列SerialStart
不是数字的任何结果。确实,当我查看以下结果时:
SELECT * FROM PE_ProductInstance WHERE ISNUMERIC(SerialStart) = 1
column 的所有结果确实是数字SerialStart
。所以我不明白为什么该查询会导致此错误:
将 nvarchar 值“8A0357”转换为数据类型 int 时转换失败。
还有什么奇怪的是这个查询什么都不返回:
SELECT
*
FROM
(SELECT * FROM PE_ProductInstance WHERE ISNUMERIC(SerialStart) = 1) p
where
SerialStart = '8A0357'
我在这里做错了什么?
解决方案
Try_Cast 是执行此操作的正确方法。请参阅此代码:
DECLARE @table TABLE(
id int identity(1,1),
name varchar(100));
INSERT into @table
VALUES
('1111'),('8A0357');
SELECT *
FROM @table p
WHERE TRY_CAST(p.Name AS int) < 8174;
推荐阅读
- javascript - 在 React 中父组件的回调函数中从子组件访问变量并在父组件中渲染返回值
- c# - 在使用 xamarin 的本机绑定库时获取 NSinvalid 参数异常
- javascript - Gravatar 调用不尊重默认标签?
- javascript - 从 JSON 文件中拆分对象数组,为 2 个光滑的轮播 reactjs 划分并循环显示
- javascript - 如何获取请求,使用套接字等待数据并发送回响应?
- android - 如何告诉 Gradle 不要在我的 .jar 依赖项中排除 .so 文件?
- java - 如何验证输入中是否有特定字符而不检查它们的顺序
- php - Wordpress Admin-ajax.php 文件卡在文件管理器中
- django - Docker&Celery - 错误:Pidfile (celerybeat.pid) 已经存在
- xaml - 来自 XML 文件的数据绑定 [UWP]