一尘不染

将VARCHAR转换为浮点数(如果为ISNUMERIC)

sql

我有一列包含字符和数字

12
13
14
19K/YR
22

因此,列类型为varchar。但是,然后我也在此列上进行了一些计算,因此,我尝试将数据转换为浮点型(如果是数字)。

这给我一个错误:

SELECT CASE ISNUMERIC(QTY) 
         WHEN 1 THEN CAST(QTY AS float) 
         ELSE QTY 
       END AS test

阅读 191

收藏
2021-05-16

共1个答案

一尘不染

您不能将其强制转换为浮点并将字符串保留在同一列中。您可以执行以下操作,以在isnumeric返回0时获得null。

SELECT CASE ISNUMERIC(QTY) WHEN 1 THEN CAST(QTY AS float) ELSE null END
2021-05-16