使用列int和varchar以逗号分隔值连接mssql中的两个表

Dha*_*ati 2 sql sql-server

我有2个表作为tblemployee和tbllead.我的问题是在tblemployee我有列id作为整数值和tbllead列leademployees有varchar与逗号分隔值.

因此,当我加入这两张桌子时,我面临着问题. select*from tblemployee as e join tbllead as l on e.id = l.LeadEmployees

获取: - 将数据类型varchar转换为bigint时出错.

我的表结构

我想要的结果应该包含除4之外的所有列值.在此先感谢...

Tim*_*sen 5

这是一个适用于任何标准数据库的通用解决方案:

SELECT DISTINCT
    t1.ID
FROM tblemployee t1
INNER JOIN tbllead t2
    ON ',' + t2.leademployees + ',' LIKE '%,' + CONVERT(varchar(10), t1.ID) + ',%'
ORDER BY
    t1.ID;
Run Code Online (Sandbox Code Playgroud)

这个查询使用了我第一次看到被@CL使用的技巧,最好通过显示一些数据来解释.第一行tbllead有这个数据:

1,2,6,7
Run Code Online (Sandbox Code Playgroud)

内部数字和外部数字的比较是不同的,因为任何一方的一个逗号的存在/缺席.但是如果我们在这个字符串周围使用逗号,我们会得到以下结果:

,1,2,6,7,
Run Code Online (Sandbox Code Playgroud)

现在,我们可以只是比较每一个IDtblemployee表,用逗号包围,对员工的每个记录列表.也就是比较,1, ,2,

这是SQL Server的演示:

演示

如果您使用的是MySQL,则上述查询会略有变化.此外,MySQL使用的选项会更紧凑FIND_IN_SET.但是我给出的答案在我看来更有用,因为无论数据库如何,它都可以轻松应用.