使用CAST()并导致错误

时间:2015-08-06 05:54:39

标签: sql sql-server sql-server-2008-r2

我试图在MSSQL 2008R2中连接2个列进行SELECT。

  

COALESCE(SeriePolita,'')+ COALESCE(CAST(NumarPolita AS数字),'')为NrSeriePolita

SeriePolita和NumarPolita都是NVARCHAR。它们之间的区别在于SeriePolita包含文本和NumarPolita唯一编号。 我需要将NumarPolita从0008838630转换为8838630。 正如您在代码行中看到的那样,我使用CAST()进行NumarPolita但是我得到了这样的信息:

  

转换nvarchar值时转换失败' AAA'数据类型int。

还有另一种方法可以将NVARCHAR转换为INT / NUMERIC吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

您需要将其强制转换为NVARCHAR才能连接它,因为nvarchar与numeric的连接是不可能的:

COALESCE(SeriePolita, '') + COALESCE(CAST(CAST(NumarPolita AS numeric) AS NVARCHAR), '') as NrSeriePolita 

答案 1 :(得分:0)

您可以使用CASE表达式和ISNUMERIC

SELECT

  CASE
    WHEN ISNUMERIC(NumarPolita)
      THEN COALESCE(SeriePolita, '') + COALESCE(CAST(NumarPolita AS numeric), '')
    ELSE ''
  END AS NrSeriePolita

  FROM ...

或者,如果您只需要可以进行此转换的记录,则可以在ISNUMERIC子句中使用WHERE