SQL Server 2008 IsNumeric返回1

时间:2013-10-21 03:56:36

标签: sql sql-server

我正在尝试使用ISNUMERIC进行查询,但我的一条数据记录将其作为数字返回。 有没有办法在不删除字符函数的情况下查询对此数据返回0?

Declare @Temp Table(Data VarChar(18))

Insert Into @Temp Values('750419.')
Insert Into @Temp Values('7.4')

Select Data,
       IsNumeric(Data) As [IsNumeric],
From   @Temp

并且我找到了一个名为但仍然不会将其返回0的函数

CREATE Function [dbo].[IsInteger](@Value VarChar(18))
Returns Bit
As
Begin
  Return IsNull(
     (Select Case When CharIndex('.', @Value) >= 0
                  Then Case When Convert(int, ParseName(@Value, 1)) <> 0
                            Then 0
                            Else 1
                            End
                  Else 1
                  End
      Where IsNumeric(@Value + 'e0') = 1), 0)
End

1 个答案:

答案 0 :(得分:0)

试试这个:

Declare @Temp Table(Data VarChar(18))

Insert Into @Temp Values('750419.')
Insert Into @Temp Values('7.4')

Select Data,
       CASE
        WHEN ISNUMERIC(Data) = 0     THEN 0
        WHEN Data LIKE '%[^-+ 0-9.]%' THEN 0
        WHEN CAST(Data AS NUMERIC(38, 0))=cast(Data AS NUMERIC(38, 10)) then 1

        ELSE 0
      END

       [IsNumeric]
From   @Temp