将数据类型varchar转换为numeric -joining表时出错

时间:2014-01-15 03:52:36

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

我无法连接两个具有不同数据类型的列。

main_ref_idcharperson_idnumeric

查询:

 select 
     main_ref_id 
 from 
     not 
 where 
     main_ref_type = 'P' 
     and convert(numeric(9, 0), main_ref_id) in (select cast(person_id as numeric) 
                                                 from person_wo_memberships)

错误

  

Msg 8114,Level 16,State 5,Line 1
  将数据类型varchar转换为数字时出错。

任何帮助???

1 个答案:

答案 0 :(得分:1)

您已声明main_ref_idchar,但您尝试将其转换为numeric值。错误是不言自明的。

尝试将person_id numeric转换为char

select main_ref_id 
from [not] 
where main_ref_type='P' and
main_ref_id in 
     (select cast(person_id as varchar) 
      from person_wo_memberships )

请在varchar语句中定义cast的长度,以匹配main_ref_id的长度