我有两个表:呼叫和设备
设备样本(共有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)
我无法绕过这个。请任何意见。
答案 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 + '%'