-1

我正在尝试使用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
4

1 回答 1

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
于 2013-10-21T07:06:26.963 回答