2017-02-03 64 views
0

我有兩個表。使用IN條件將多個Int轉換爲sql中的varchar

僱主和部門

Emp有列deptno varchar類型,dept有列deptno int類型。

當我使用下面的查詢:

select * from emp where deptno in (select deptno from dept) 

它不會因爲獲取不同的數據類型的任何數據。

有沒有什麼辦法將多個deptno從int轉換爲varchar?

+3

修復您的數據!外鍵應該與主鍵具有相同的類型,並且應該聲明它們。對你的問題的簡單回答是'cast()'或'convert()',但是正確的做法是修復數據。 –

回答

0
select * 
from emp 
where deptno in 
     (select CAST(deptno AS Varchar(255)) AS deptno 
     from dept) 

或使字段類型相同,因爲它們是相關的按評論

1

您可以使用轉換

select * 
    from emp 
    where CONVERT(INT, deptno) in (select deptno from dept) 
-1
SELECT 
,tableemp.* 
,CAST(dep.deptno AS INT) deptno 
FROM deptno dep 
INNER JOIN emp 
emp.PK_PrimaryKey = dep.FK_ForeignKey 
+1

這是無效的SQL –

+0

如果你不能加入兩個表的關係,你只需要做select並做一個內部選擇就像上面的人一樣。我只是認爲,因爲它是一個SQL表,它應該有一些關係像PK和FK的,但如果它不存在,那麼做其他人在上面做了什麼。祝你好運 –