从nvarchar到int的SQL转换失败错误

时间:2013-06-12 19:25:48

标签: sql

SELECT  ITEMGROUPID ,
        ITEMID ,
        ITEMNAME ,
        ITEMTYPE ,
        COSTGROUPID ,
        SALESMODEL ,
        DIMENSION ,
        ( SELECT    DESCRIPTION
          FROM      DIMENSIONS
          WHERE     ( NUM = 0 )
                    AND ( DIMENSIONCODE = IT1.DIMENSION )
        ) AS Expr1
FROM    INVENTTABLE AS IT1
WHERE   ( DATAAREAID = 'm02' )
        AND ( ITEMGROUPID = 'FG' )
        AND ( ITEMID = '14901C' )

此查询引发错误。结果应该是从int列获取值IT1.DIMENSION并搜索Dimension表并从{ {1}}表。

执行时出现以下错误:

  

转换失败。将NVARCHAR值'AG'转换为数据类型INT时。

此处的目标是消除在上述两个表nvarcharDIMENSIONS之间使用左外连接。

1 个答案:

答案 0 :(得分:0)

在SQL Server中,您可以通过

执行此操作
  

... DIMENSIONCODE =转换(int,IT1.DIMENSION)......

然而,这使得IT1.Dimension列的内容实际上是数字的慷慨假设。如果,在某些情况下,它不包含可以转换为整数的东西,那么你必须记录为

  

... DIMENSIONCODE = Convert(int,iif(isnumeric(IT1.DIMENSION)= 1,IT1.DIMENSION,“1”))...

如果IT1.DIMENSION不是有效数字,则在表达式结果中强制使用“1”。由于您没有具体说明您正在使用哪个数据库,因此可能需要使用一些变体。

相关问题