为什么在使用 ISNUMERIC() 时转换失败?

Yas*_*ash 2 sql t-sql sql-server casting

SELECT CAST([Revenue Size (M)] AS float)
FROM Raw_Data A
WHERE ISNUMERIC([Revenue Size (M)]) = 1
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

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

收入规模(M)样本:7371 ,7372 ,4899 ,59.5 ,1.4 ,2 ,3400

Gor*_*off 5

有多个示例isnumeric()返回1但无法将值转换为浮点数。四个例子是:

  • '.'
  • '-'
  • '-.'
  • '$1'

您可以在此 SQL Fiddle 中看到这一点

更好的做法是使用try_cast()

SELECT TRY_CAST([Revenue Size (M)] AS float)
FROM Raw_Data A
WHERE TRY_CAST([Revenue Size (M)] AS float) IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)