【问题标题】:Error converting data type varchar to numeric -joining tables将数据类型 varchar 转换为数字连接表时出错
【发布时间】:2014-01-15 03:52:35
【问题描述】:

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

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)

错误

消息 8114,第 16 级,状态 5,第 1 行
将数据类型 varchar 转换为数值时出错。

有什么帮助???

【问题讨论】:

  • 你可以分享你的表结构,你也可以尝试加入列而不转换为数字。只需将它们作为字符串加入即可。
  • 您将 main_ref_id 转换为 NUMERIC(9,0) 并将 person_id 转换为 NUMERIC(18,0)。您是否查看了这两列中的数据以查看是否有任何非数字值?它们是什么数据类型?而且我不相信from not where 语法有意义。还有其他龙掉落错误吗?

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


【解决方案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 )

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多