当前位置: 首页 > 面试题库 >

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

万俟玉书
2023-03-14
问题内容

在SO上进行了搜索和搜索,无法弄清楚 尝试将每个字段作为FLOAT进行铸造都无济于事,转换没有给我任何进一步的帮助。
如何获取以下case子句以返回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

average_days_pay = float
terms_code = char


问题答案:

尝试使用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


 类似资料:
  • 问题内容: 我正在尝试使用存储过程基于varchar类型的“名称”列的输入值来返回“项目”表的“ ItemId”列值,但是每当我将任何值传递给存储过程时,它都会向我返回错误: 将数据类型varchar转换为int时出错。 这就是我所说的: 问题答案: 您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。 另外,您存储的过程太复杂了。对于从存储的proc返回

  • 问题内容: 我目前有一个表,其列为。该列可以容纳数字或文本。在某些查询期间,我将其视为一列(我将其与另一个表中的列进行连接) 只要在该字段中只有数字没有问题,但是即使是一分钟的分钟也有文本,而在此字段中没有数字,我就会收到“将数据类型转换为的错误”。即使在WHERE部分中,我也确保所有文本字段都没有出现。 为了解决这个问题,我创建了一个视图,如下所示: 但是,即使视图仅显示具有数字值的行并将Myc

  • 我的表'TBL1'中的''数据类型中有一列'amount'。现在我必须计算该列的总量(我知道我可以修改表的列,但我必须遵循一些过程来保持它为''。但是结果必须在datatype中返回。 但我搞错了。

  • 问题内容: 我已经搜索了这个很棒的论坛并在Google周围搜索,但无法解决。 我们有两个表(相信我,我与这些表无关)。这两个表都有一个名为的列。 然而,在一个表中,数据类型就是和在另一个表中,这是。 我们从选择这里被定义为和保存该ID写入其中被定义为。 作为数据类型descrepancy的结果,我们得到错误转换数据类型来。 在不弄乱数据库的情况下,我想强制使用摆脱该错误。 有什么想法我在下面的代码

  • 问题内容: 我创建了一个过程并收到了此消息 将varchar值’%’转换为数据类型int时,转换失败。 我不知道这可能是什么,但是当我将过程更改为这样时: 似乎工作正常。我是SQL的新手,所以可以得到任何帮助,也许有更好的方法来做我想做的事情? 问题答案: 这是在子句中: 是一个整数。因此,您需要将其转换为字符串: 为什么要使用称为的列是可疑的。也许您只想要:

  • 问题内容: 尝试运行SQL查询时出现此错误… 将varchar值’Id’转换为数据类型int时转换失败 请帮我 :( 问题答案: 在您的情况下,请确保一列是类型,另一列是类型。 由于优先级高于,因此列将隐式转换为 因此,将列明确转换为varchar。 我已经考虑了如果不是的类型,然后转换为