尝试使用ISNUMERIC处理无法转换的字符串:
When cust_trendd_w_costsv.terms_pre like '%[%]%' and (prod.dbo.BTYS2012.average_days_pay) -(case when isnumeric(substring(cust_trendd_w_costsv.terms_pre,3,2))=1 then cast(substring(cust_trendd_w_costsv.terms_pre,3,2) as float) else 0 end)<= 5 THEN prod.dbo.cust_trendd_w_costsv.terms_pre



