使用#table时将数据类型varchar转换为数字时出错

时间:2013-12-18 15:16:36

标签: sql-server tsql

假设我有这个变量

DECLARE @Caracteristiques TABLE
      (
            EnsembleImmobilierId int,
            ImmobilierId      int,
            BatimentId        int,
            Code              varchar(5),
            Valeur                  varchar(40)
      )

用这个

查询它
SELECT      CONVERT(decimal(15,4), ISNULL(C.Valeur, 0))
FROM  @Caracteristiques C

一切似乎都很好。 如果是为了instence,我正在更改临时表的变量表

CREATE TABLE #Caracteristiques 
      (
            EnsembleImmobilierId int,
            ImmobilierId      int,
            BatimentId        int,
            Code              varchar(5),
            Valeur                  varchar(40)
      )

我收到了这个

  

Msg 8114,Level 16,State 5,Procedure IvpCalculation,Line 140
  将数据类型varchar转换为数字时出错。

我们如何解释它?

1 个答案:

答案 0 :(得分:0)

我的查询中没有任何问题;很可能在你的Valeur列中有一个字符串值,例如“abcde”,它不能转换为十进制,因此它会抛出该错误。

我尝试过相同的操作,如果您的valeur列的值类似于“12345”,则可以正常使用;即使你像cast(isnull(Valeur,'') as decimal(15,4))一样投射。看下面的小提琴

http://sqlfiddle.com/#!6/32a5b/3