在sql中使用in条件将多个Int转换为varchar

在sql中使用in条件将多个Int转换为varchar,sql,sql-server,sql-server-2008,types,Sql,Sql Server,Sql Server 2008,Types,我有两张桌子 环境管理计划和部门 Emp具有列deptno varchar类型,dept具有列deptno int类型 当我使用以下查询时: select * from emp where deptno in (select deptno from dept) 由于数据类型不同,它不会检索任何数据 有没有办法将多个deptno从int转换为varchar select * from emp where deptno in (select CAST(deptno AS Varc

我有两张桌子

环境管理计划和部门

Emp具有列deptno varchar类型,dept具有列deptno int类型

当我使用以下查询时:

select * from emp where deptno in (select deptno from dept)
由于数据类型不同,它不会检索任何数据

有没有办法将多个deptno从int转换为varchar

select * 
from emp 
where deptno in 
      (select CAST(deptno AS Varchar(255)) AS deptno 
       from dept)
或者根据注释将字段设置为与其相关的相同类型,您可以使用convert

  select * 
  from emp 
  where CONVERT(INT, deptno) in (select deptno from dept)

修正你的数据!外键应具有与主键相同的类型,并且应声明它们。对于您的问题,最简单的答案是
cast()
convert()
,但正确的做法是修复数据。这是无效的。如果您无法使用关系连接两个表,您只需执行选择,然后执行类似上面的内部选择。我只是想,因为它是一个SQL表,它应该有一些像PK和FK的关系,但如果它不存在,那么就按照上面其他人所做的去做。祝你好运
SELECT
,tableemp.* 
,CAST(dep.deptno AS INT) deptno
FROM deptno dep
INNER JOIN emp 
emp.PK_PrimaryKey = dep.FK_ForeignKey