首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL ISNUMERIC返回奇数结果

SQL ISNUMERIC返回奇数结果
EN

Stack Overflow用户
提问于 2019-05-10 03:05:56
回答 1查看 51关注 0票数 -1

所以我有这个问题:

代码语言:javascript
复制
SELECT 
    *
FROM
    (SELECT * FROM PE_ProductInstance WHERE ISNUMERIC(SerialStart) = 1) p
where 
    CAST(SerialStart AS int) < 8174

从理论上讲,子查询应该过滤掉列SerialStart不是数字的所有结果。事实上,当我看到just的结果时:

代码语言:javascript
复制
 SELECT * FROM PE_ProductInstance WHERE ISNUMERIC(SerialStart) = 1

对于列SerialStart,所有结果实际上都是数字。所以我不明白为什么查询会导致这个错误:

将nvarchar值“8A0357”转换为数据类型int时,

转换失败。

同样奇怪的是,这个查询没有返回任何内容:

代码语言:javascript
复制
SELECT
    *
FROM
    (SELECT * FROM PE_ProductInstance WHERE ISNUMERIC(SerialStart) = 1) p
where 
    SerialStart  = '8A0357'

我在这里做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 03:15:10

Try_Cast是实现这一目标的正确方法。请参阅以下代码:

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56066065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档