我需要連接2個表,但沒有真正的通用字段。在表A中,ID字段包含來自表B的ID,但它在ID之前和之後具有附加字符。使用通配符連接2個表
表A ID 。一個J123 00
表B ID J123
需要根據表B中的J123加入B到A
我怎麼能寫連接語句加入B表對錶A?
使用SQL Sever的2008
我需要連接2個表,但沒有真正的通用字段。在表A中,ID字段包含來自表B的ID,但它在ID之前和之後具有附加字符。使用通配符連接2個表
表A ID 。一個J123 00
表B ID J123
需要根據表B中的J123加入B到A
我怎麼能寫連接語句加入B表對錶A?
使用SQL Sever的2008
您可以使用like
。性能不好,但它可以工作:
select *
from tableA a join
tableB b
on a.id like '%' + b.id + '%';
請注意,這可能會做出意想不到的事情。例如,值爲10
的所有ID將與100
匹配。除非你有某種方式知道a中的哪些字符實際上是id
字段,否則你可能必須忍受這一點。
而且,這種情況發生在人們希望表的主鍵意味着什麼時。這是匿名主鍵的一個很好的參數。沒有人會想到試圖解釋它。如果有人需要關於它的信息,他們可以在適當的表格中查找它。
編輯:
,如果你喜歡,你可以使用exists
條款這樣寫:
select *
from tableA a
where exists (select 1 from tableB b where a.id like '%' + b.id + '%');
這不會tableA
產生重複值時,有一個以上的匹配值。
謝謝Gordon,工作正常。 – user3673417
而不是使用連接可以根據子查詢從tableA中選擇記錄,其中a.id IN(選擇'%'+ b.id +'%'FROM tableB b) – user3673417
你有什麼試過?向我們展示迄今爲止您自己解決問題所做的工作? –
試圖使用widlcard%和Like而不是= – user3673417
在TableA_ID上加入TableB Like'%'TableB_ID'%' – user3673417