使用另一个表中的通配符值搜索多个列

时间:2013-11-20 18:27:46

标签: sql sql-server sql-server-2008

我有两个表:呼叫和设备

设备样本(共有93个设备):

1234
2341
3412
4123

My Calls表有几列,但在4列中,Devices表中的值可能存在。但是,这些列中包含文本和其他值,例如

1234 (Jim Jones), 5555 (Helpline)
6666 (Services), 3412 (Mike Rowe)

我正在试图弄清楚如何使用Devices表和“IN”语句进行外卡搜索(%)。甚至可能都不可能。

这不是有效的SQL,但我试图明白我的观点:

select * from Calls where Row2 LIKE IN ( select * from devices)

我无法绕过这个。请任何意见。

2 个答案:

答案 0 :(得分:1)

假设Calls.Row2中的每个号码后面都有空格,您可以尝试这样的话。

select distinct c.*
from calls c join devices d 
     on charindex(convert(varchar(10), d.deviceid) + ' ', c.row2)>0

<强> Fiddle demo

更新:根据@Shiva的评论,选择列表是不同的,以避免重复记录

答案 1 :(得分:0)

我不是真的推荐这个,但这应该做你想要的:

SELECT C.* 
FROM Calls C
INNER JOIN devices D
    ON C.Row2 LIKE '%' + D.Col1 + '%'