首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中IsInteger的最佳等价物

SQL Server中IsInteger的最佳等价物
EN

Stack Overflow用户
提问于 2010-03-02 02:43:40
回答 13查看 54.7K关注 0票数 36

在SQL Server (2000/2005/2008)中,确定字段值是否为整数的最佳方法是什么?

对于可能不会转换为整数的各种格式,IsNumeric将返回true。例如“15,000”和“15.1”。

您可以使用like语句,但这似乎只适用于具有预定位数的字段...

代码语言:javascript
复制
select * where zipcode like '[0-9][0-9][0-9][0-9][0-9]'

我可以编写一个用户定义的函数,尝试在try/catch块中将varchar参数转换为int,但我正在与社区进行检查,看看是否有人遇到过实现此目标的任何成功的方法-最好是可以在SQL语句的where子句中使用而无需创建其他对象的方法。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-03-02 02:52:01

一种方法是

代码语言:javascript
复制
zipcode NOT LIKE '%[^0-9]%'

双重否定,我爱死他们了!

票数 40
EN

Stack Overflow用户

发布于 2010-03-03 13:20:13

处理负数的较晚条目

代码语言:javascript
复制
ISNUMERIC(zipcode + '.0e0') --integer
ISNUMERIC(zipcode + 'e0')  --decimal

有关更多信息,请参阅this

票数 60
EN

Stack Overflow用户

发布于 2010-03-02 02:57:16

如果SQL Server是2005+,我会选择enable CLR and create the function to support regexes。对于SQL Server2000,使用see this article for creating a UDF to do the same thing

然后我将使用正则表达式:^\d{5}$

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2358147

复制
相关文章

相似问题

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