标签归档:isnumeric

mssql sqlserver isnumeric函数使用注意事项


摘要:
下面讲述sqlserver isnumeric函数使用注意事项,如下所示:
实验环境:sql server 2008 R2



isnumeric函数功能说明

isnumeric检测字符串是否为一个有效的数值表达式。
在对字符串进行转换前,我们可以使用此函数检测字符串是否为有效的数值表达式,
如果为有效的数值表达式,则返回1,反之则返回0

isnumeric 常见用法

  select isnumeric(89),isnumeric('2D82')

从以上的转换我们发现,两者都返回1,但是2D82我们看着不像一个数值类型,那么为什么返回1
出现这种异常的原因为:

因为D或E表示科学计数法,而isnumeric检测数据的原理,是将传入的字符串转换为数值类型,如果能转换成功,则返回1
例:
字符串中包含 + – d e $ ¥等都可以检测成功,并返回1

例:以下的表达式,sqlserver都认为是一个符合条件的数学表达式

  SELECT ISNUMERIC('2d2'),
         ISNUMERIC('2D3'),
		 ISNUMERIC('2e+2'),
         ISNUMERIC('$233')

mssql_sqlserver_isnumeric_注意事项

mssql_sqlserver_isnumeric_注意事项


isnumeric注意事项:

由于isnumeric的本质是讲述传入的字符串转换为float类型是否成功,作为判断标志
如果可通过cast转换成功,则返回1,否则返回0
—————–
即:
isnumeric是一个数值类型转换float类型前的判断,如果我们用于int类型判断时,需特别注意,避免出现异常bug

mssql sqlserver 判断sql字符串是否可以转换为数值类型的方法分享


摘要:
下文分享在sqlserver中判断字符串是否可以转换为数值类型的方法分享,如下所示:
实验环境:sql server 2008 R2



实现思路:
主要采用sqlserver自带的ISNUMERIC函数对输入的字符串进行检测,如果是一个有效的数值表达式,则返回1,否则返回0
—–注意事项——-
使用此函数进行数据转换,当数值中包含 加号 减号 货币符号,都可以进行合适的转换。

例:

 select ISNUMERIC('898.89'), ISNUMERIC('猫猫小屋')
   -----输出-----
   1,0

mssql sqlserver isnumeric 是否数值类型检测函数使用注意事项


摘要:
下文讲述我们常用的isnumeric检测函数的具体用法,如下所示:



一、isnumeric 语法简介

isnumeric(表达式)
当输入的表达式 可转换为numeric符合的数据类型时,
isnumeric函数返回1 否则返回0
————————————————
isnumeric可检测的类型包括:
int、numeric、bigint、money、smallint、smallmoney、
tinyint、float、decimal、real
————————————————

如果在数字字符前面加上 “+” 或 “-” 或”货币符号”,
isnumeric函数将返回1,
所以检测数据类型时,需注意货币符号



二、isnumeric 注意事项

declare @t table(info varchar(60))
insert into @t (info)
values('8'),('85,890.056'),('¥898'),('$8,888'),('+8'),('98.09')
---检测是否为数值型
select * from @t t where isnumeric(info)=1 

---如果不包含千分号和货币符号,可采用pathindex
SELECT  *   FROM    @t t 
WHERE   PATINDEX('%[^0-9|.|-|+]%', t.info) = 0  
go