将字符串'm2'添加到算术结果中

时间:2014-10-16 11:02:31

标签: sql-server

当我有

case 

  when p.okres_nazev like '%Praha%'

   then cast(isnull(RealEstateTax_Suma,0) / 7 / 2 as varchar (30)) +' m2'

它给了我错误

Conversion failed when converting the varchar value '0.00 m2' to data type int.

我想要结果+ m2。所以像30平方米

更新: 查询看起来像

SELECT a.custkey,
       a.dt,
       a.RealEstateTax_Suma,
       a.RealEstateTax_pocet,
       p.psc,
       CASE
         WHEN p.okres_nazev LIKE 'Praha' 
              THEN CAST(isnull(RealEstateTax_Suma, 0) / 7 / 2 AS VARCHAR (30)) + ' m2'
         ELSE 0
       END AS VelikostNemovitosti
FROM   wspace.dbo.DP_CustPayments_v3 a
       JOIN dmr.Cust c
         ON a.custKey = c.CustKey
            AND c.LastRecFlg = 1
       LEFT JOIN wspace.dbo.tp_GEO p
              ON c.PostZIPCode = p.psc 

1 个答案:

答案 0 :(得分:2)

问题在于else 0。将其更改为else '0 m2',它应该可以正常工作。

问题是,case的结果总是必须是同一类型。 0子句中的else是一个整数,因此它会尝试将另一种情况下的varchar转换为int,但这不起作用。

但是,你不应该在数据库中这样做。添加m2和处理null值应该在表示层中完成,而不是在SQL中完成。

另外,like不起作用 - 你需要使用例如like 'Praha%',否则你只是在做= 'Praha'