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

use*_*052 3 sql t-sql sql-server

搜索和搜索SO并无法弄清楚
尝试将每个字段作为FLOAT尝试铸造无济于事,转换没有让我更进一步
如何获得以下案例条款以返回THEN部分中所述的值?

错误:消息8114,级别16,状态5,行1错误将数据类型varchar转换为float.

我的SQL查询部分导致错误:

When cust_trendd_w_costsv.terms_code like '%[%]%' and (prod.dbo.BTYS2012.average_days_pay) - (substring(cust_trendd_w_costsv.terms_code,3,2)) <= 5 THEN prod.dbo.cust_trendd_w_costsv.terms_code
Run Code Online (Sandbox Code Playgroud)

average_days_pay = float
terms_code = char

干杯!

val*_*lex 8

尝试使用ISNUMERIC来处理无法转换的字符串:

When cust_trendd_w_costsv.terms_code like '%[%]%' 
and (prod.dbo.BTYS2012.average_days_pay) - 

(case when isnumeric(substring(cust_trendd_w_costsv.terms_code,3,2))=1 
         then cast(substring(cust_trendd_w_costsv.terms_code,3,2) as float)
         else 0
 end)
<= 5 THEN prod.dbo.cust_trendd_w_costsv.terms_code
Run Code Online (Sandbox Code Playgroud)