将数据类型varchar转换为float isnumeric = 1时出错

Stu*_*ens 4 sql sql-server sql-server-2008

当我运行脚本时:

select 
    cast(s as float)
from 
    t
where 
    ISNUMERIC(s) = 1
Run Code Online (Sandbox Code Playgroud)

它会因错误而停止:

将数据类型varchar转换为float时出错.

为什么会这样?我试图转换为只浮数数字.我如何找出导致错误的行?

小智 6

isnumeric函数认为几乎所有东西都是数字.请改用"try_convert".如果值无法转换为目标数据类型,则返回null.

select convert(float, '1,0,1')
where try_convert(float, '1,0,1') is not null
Run Code Online (Sandbox Code Playgroud)

如果您使用的是旧版本的SQL,我会编写自己的函数.