2013-11-20 44 views
0

我有兩個表:電話和設備搜索多列與外卡值從另一個表

樣品裝置(93個裝置在所有):

1234 
2341 
3412 
4123 

我的電話表有幾列,但是在列中的4列中可能存在Devices表中的值。然而這些列在他們的文字和其他價值,例如

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

我試圖找出我怎麼能基本上做到使用設備表和「IN」語句中的通配符搜索(%)。這可能不可能。

這不是有效的SQL,但我想把我的關鍵:

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

我不能環繞此我的頭。請輸入任何內容。

回答

0

我真的不建議這一點,但是這應該做你想要什麼:

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

我會嘗試這一點。 – kirkdmo

1

假設你有Calls.Row2每個數字後面輸入一個空格,你可以嘗試這樣的事情。

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

Fiddle demo

UPDATE:選擇列表是不同的,以避免重複記錄按@Shiva的評論

+0

如果某行有多個匹配的DeviceID,則失敗。見http://sqlfiddle.com/#!3/d55e0/1我猜你可以通過在SELECT – Shiva

+0

@Shiva中做一個DISTINCT來解決它,同意,它會帶來重複的記錄。我已經更新了答案。 – Kaf

+0

我會試試這個,謝謝! – kirkdmo