2017-02-03 6 views
0

У меня есть две таблицы.Преобразование нескольких Int в varchar в sql с использованием условия IN

Emp and dept.

У emp есть столбец deptno varchar type, а у отдела есть столбец deptno int type.

Когда я использую следующий запрос:

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

Он не извлекает никаких данных из-за различных типов данных.

Есть ли способ конвертировать несколько дептно из int в varchar?

+3

Fix ваши данные! Внешние ключи должны иметь тот же тип, что и первичный ключ, и они должны быть объявлены. Упрощенный ответ на ваш вопрос: '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

, если вы не можете присоединиться к двум таблицам с отношением, вам просто нужно сделать выбор и сделать внутренний выбор, как парень выше. Я просто подумал, что поскольку это таблица SQL, у нее должно быть какое-то отношение LIKE PK и FK, но если это не так, то делайте то, что сделал другой парень выше. Удачи –