Sql &引用;将表达式转换为数据类型nvarchar时出现算术溢出错误。”;

Sql &引用;将表达式转换为数据类型nvarchar时出现算术溢出错误。”;,sql,sql-server,overflow,common-table-expression,sqldatatypes,Sql,Sql Server,Overflow,Common Table Expression,Sqldatatypes,我正在尝试比较两个表之间的数据,在这两个表中,我需要将多个列作为复合键连接起来,以获得唯一标识符。我使用的是CTE,代码是: WITH SuburbDataTest AS ( SELECT * , CAST(Address AS NVARCHAR(100))+' ' +CAST(LivingAddress AS NVARCHAR(2)) + ' ' + CAST(StartDate AS NVARCHAR(11))+ ' ' +CAST(AddressTypeId AS N

我正在尝试比较两个表之间的数据,在这两个表中,我需要将多个列作为复合键连接起来,以获得唯一标识符。我使用的是CTE,代码是:

WITH SuburbDataTest AS (
  SELECT *
    ,  CAST(Address AS NVARCHAR(100))+' ' +CAST(LivingAddress AS NVARCHAR(2))
    + ' ' + CAST(StartDate AS NVARCHAR(11))+ ' ' +CAST(AddressTypeId AS NVARCHAR(1))
    + ' ' +CAST(SuburbId AS NVARCHAR(1))AS SuburbDataTestColumn
  FROM [mig].[ConsumerAddressMigration]
  WHERE SuburbId is NOT NULL
)
SELECT *
FROM SuburbDataTest staging
WHERE SuburbDataTestColumn IN (
  SELECT Address+' ' +CAST(LivingAddress AS NVARCHAR(2))+ ' '+CAST(StartDate AS NVARCHAR(11))
    + ' ' +CAST(AddressTypeId AS NVARCHAR(1))+ ' ' +CAST(SuburbId AS NVARCHAR(1)) AS SuburbDataTestColumn
  FROM [dbo].[tblConsumerAddress]
)
不幸的是,我越来越

将表达式转换为数据类型nvarchar时出现算术溢出错误


有什么想法吗?

当你把一个数字转换成一个字符串,而字符串不够大时,就会发生这种情况。我想这就是问题所在:

CAST(SuburbId AS NVARCHAR(1))

如果SuburbId
是一个大于9的数字,那么这将生成一个错误。或者,如果该值为负,您也会得到相同的错误。

我们可以看到[mig].[ConsumerDressMigration]和[dbo].[tblConsumerAddress]的模式吗?Duh!我真是瞎了眼!非常感谢@Gordon Linoff!