如何用SELECT中连接到ID字符串的数据替换ID字符串

时间:2019-04-29 13:54:57

标签: sql sql-server tsql

我有2张桌子。第一个表的“ EmployeeIds”列是一串带有一串ID的字符串,这些ID以逗号分隔(例如:“ 4124,2945,2873,4047,3046,4774”)。

第二张表具有这些ID作为其标识(EmployeeID),并且还具有与此ID相关的名称。

我想选择一个地方,列出table1中的所有内容,但我想查看与这些ID相关的名称,而不是EmployeeIds列中的ID。

SELECT name from Table2
WHERE EmployeeID CAST(EmployeeID AS int) IN (SELECT EmployeeIds FROM Table1)

我收到此错误:“将varchar值'4124,2945,2873,4047,3046,4774'转换为数据类型int时转换失败。”

我知道上面的代码不会退还我需要的所有东西,因为我也需要将其与Table1结合在一起,但是我是从内而外的工作,而且我已经被卡在这里了。

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server 2016,则可以执行以下操作:

DECLARE @s varchar(1000)
SELECT @s=EmployeeIds FROM Table1
SELECT name from Table2
JOIN STRING_SPLIT(@s,',') ON value=CAST(EmployeeID AS int)