重写ISNUMERIC函数

declare @test table(strings varchar(50))

 

Insert into @test

 

Select '12d3' union all

 

Select '87234.45' union all

 

Select '$123,456.00' union all

 

Select '  12  ' union all

 

Select char(10) union all

 

Select '$'

 

 

 

select strings,isnumeric(strings)as valid from @test

 

/*

 

strings                                            valid

 

-------------------------------------------------- -----------

 

12d3                                               1

 

87234.45                                           1

 

$123,456.00                                        1

 

  12                                               1

 

 

 

                                                  1

 

$                                                  1

 

 

 

(6 行受影响)

 

 

 

*/

 

 

 

--重写ISNUMERIC函数

 

 

 

CREATE Function Is_numeric(@value varchar(25))

    Returns bit

as

Begin

    Return(

         case when @value not like '%[^-0-9.]%'

                   and len(@value)-len(replace(@value,'.',''))<2

                   and 1=(case when charindex('-',@value)>0

                                  then

                                    case when left(@value,1)='-'

                                           and len(@value)-len(replace(@value,'-',''))<2

                                           and len(@value)>1

                                         then 1 else 0

                                    end

                               else 1 end)

                 then 1 else 0 end)

 

End

 

GO

 

 

 

select strings,dbo.is_numeric(strings)as valid from @test

 

/*

 

strings                                            valid

 

-------------------------------------------------- -----

 

12d3                                               0

 

87234.45                                           1

 

$123,456.00                                        0

 

  12                                               0

 

 

 

                                                  0

 

$                                                  0

 

 

 

(6 行受影响)

 

 

 

*/

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值