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