INNER JOIN SQL查询将nvarchar值转换为int

时间:2015-04-19 23:35:57

标签: sql

我正在尝试在SQL中使用INNER JOIN来显示从一个表到另一个表的列。这是我正在使用的查询:

SELECT *
FROM Person.BusinessEntity 
INNER JOIN HumanResources.Employee ON Person.BusinessEntity.BusinessEntityID = HumanResources.Employee.JobTitle

当我执行此操作时,出现错误:

  

将nvarchar值'首席执行官'转换为数据类型int

时转换失败

我不是要尝试转换数据,所以我不确定为什么我会收到此错误。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

当您尝试连接到具有不同数据类型的列时,您强制数据库进行隐式转换,在这种情况下它无法执行。你想要做的是加入共享密钥上的表(在这种情况下是BusinessEntityID)。

表和列名称看起来很熟悉,我猜你正在按照开始Microsoft SQL Server 2012编程(或一些使用AdventureWorks示例数据库的类似书籍)中的示例进行操作如果是这样,问题的根源是您在HumanResources.Employee表中使用了错误的列。它应该是

SELECT Person.BusinessEntity.*, HumanResources.Employee.JobTitle
FROM Person.BusinessEntity 
INNER JOIN HumanResources.Employee
  ON Person.BusinessEntity.BusinessEntityID = HumanResources.Employee.BusinessEntityID

答案 1 :(得分:0)

我认为列BusinessEntityID的类型是INT,而列JobTitle的类型是NVARCHAR。所以这个:

    ON Person.BusinessEntity.BusinessEntityID = HumanResources.Employee.JobTitle

等于:

    ON 1 = 'Chief...Officer'

你无法将int与NVARCHAR进行比较,两者必须是同一类型。

答案 2 :(得分:0)

如果HumanResources.Employee.JobTitle混合了数据,数字和字符 我将使用

解决它
WHERE HumanResources.Employee.JobTitle!= CHAR

例如。