将nvarchar转换为int时出错

时间:2013-03-19 09:09:49

标签: sql sql-server-2008-r2

SELECT 
    New_accountid AS AccountId
FROM 
    BingMapsPlatform_MSCRM.dbo.FilteredAccount WITH (NOLOCK)
WHERE 
    new_islicensed = 1
    AND new_accountid NOT IN (SELECT DISTINCT CONVERT(INT,New_AccountId)
                              FROM BingMapsPlatform_MSCRM.dbo.New_keydenylistExtensionBase WITH (NOLOCK)
                              WHERE New_AccountId IS NOT NULL)

我从这个脚本中收到此错误。请帮帮我。

  

ErrorMessage:状态1,第1行   将nvarchar值'account 1'转换为数据类型int时,转换失败。

2 个答案:

答案 0 :(得分:0)

Id是int吗?可能是guid或顺序guid。如果没有,那么将表分成两半,然后重新运行等,直到你确定产生错误的行(我只尝试用一行来检查傻瓜)。哦,先将表格内容复制到备份中(但你知道)

答案 1 :(得分:0)

此行导致错误:

CONVERT(INT,New_AccountId)

使用过滤器where accountId = 'account 1'在桌面上进行常规选择,更改此值并重试。

考虑使用ISNUMERIC(input)函数确定转换前的nummeric数量,如果不是,则使用0或-1作为默认值(例如,请查看this answer)。