Sql 从另一个表中搜索具有通配符值的多个列
我有两张桌子:电话和设备 设备样本(共93台设备): My Calls表有几列,但其中4列中可能存在Devices表中的值。但是,例如,这些列中包含文本和其他值Sql 从另一个表中搜索具有通配符值的多个列,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有两张桌子:电话和设备 设备样本(共93台设备): My Calls表有几列,但其中4列中可能存在Devices表中的值。但是,例如,这些列中包含文本和其他值 1234 (Jim Jones), 5555 (Helpline) 6666 (Services), 3412 (Mike Rowe) 我试图弄清楚如何使用Devices表和“IN”语句基本上进行通配符搜索(%)。这甚至可能是不可能的 这不是有效的sql,但我正试图表达我的观点: select * from Calls where R
1234 (Jim Jones), 5555 (Helpline)
6666 (Services), 3412 (Mike Rowe)
我试图弄清楚如何使用Devices表和“IN”语句基本上进行通配符搜索(%)。这甚至可能是不可能的
这不是有效的sql,但我正试图表达我的观点:
select * from Calls where Row2 LIKE IN ( select * from devices)
我就是受不了这件事。请输入任何信息。我不建议这样做,但这应该满足您的要求:
SELECT C.*
FROM Calls C
INNER JOIN devices D
ON C.Row2 LIKE '%' + D.Col1 + '%'
假设在
Calls.Row2
中的每个号码后面都有一个空格,您可以尝试以下方法
select distinct c.*
from calls c join devices d
on charindex(convert(varchar(10), d.deviceid) + ' ', c.row2)>0
更新:根据@Shiva的评论,选择列表是不同的,以避免重复记录如果一行有多个匹配的DeviceID,则此操作失败。看,我想你可以通过在SELECT@Shiva,同意,它将带来重复记录。我已经更新了答案。
select distinct c.*
from calls c join devices d
on charindex(convert(varchar(10), d.deviceid) + ' ', c.row2)>0