在SQL Server (2000/2005/2008)中,确定字段值是否为整数的最佳方法是什么?
对于可能不会转换为整数的各种格式,IsNumeric将返回true。例如“15,000”和“15.1”。
您可以使用like语句,但这似乎只适用于具有预定位数的字段...
select * where zipcode like '[0-9][0-9][0-9][0-9][0-9]'我可以编写一个用户定义的函数,尝试在try/catch块中将varchar参数转换为int,但我正在与社区进行检查,看看是否有人遇到过实现此目标的任何成功的方法-最好是可以在SQL语句的where子句中使用而无需创建其他对象的方法。
发布于 2010-03-02 02:52:01
一种方法是
zipcode NOT LIKE '%[^0-9]%'双重否定,我爱死他们了!
发布于 2010-03-03 13:20:13
处理负数的较晚条目
ISNUMERIC(zipcode + '.0e0') --integer
ISNUMERIC(zipcode + 'e0') --decimal有关更多信息,请参阅this
发布于 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}$
https://stackoverflow.com/questions/2358147
复制相似问题