2010-06-10 42 views
1

我有兩個表,我想通過Table-B中的TermID搜索表A中的TermID,並且如果表A中存在TermID,然後想要得到如下所示的結果表。
TermID的長度不同。沒有搜索圖案與 「喜歡%」
TermIDs表-A是在表-B
關於TermIDs的一部分進行搜索,Sql(部分)在列表中搜索並獲得匹配的字段

表-A

 
ID   TermID 
101256666 126006230 
101256586 126006231 
101256810 126006233 
101256841 126006238 
101256818 126006239 
101256734 1190226408 
101256809 1190226409 
101256585 1200096999 
101256724 1200096997 
101256748 1200097005 

表-B

 
TermNo TermID 
14 8990010901190226366F 
16 8990010901190226374F 
15 8990010901190226382F 
18 8990010901190226408F 
19 8990010901190226416F 
11 8990010901200096981F 
10 8990010901200096999F 
12 8990010901200097005F 
13 8990010901200097013F 
17 8990010901260062337F 

因此我想得到這張表;
結果表-TableA.ID TableA.TermID TableB.TermNo

 
A.ID  A.TermID B.TermNo 
101256734 1190226408 18 
101256585 1200096999 10 
101256748 1200097005 12 

回答

0

您的預期結果集是錯誤的:TABLE_A.TERMID = 126006233匹配TABLE_B.TERMID = 8990010901260062337F。

反正這裏是一個解決方案:

SQL> select a.id, a.termid, b.termno 
    2 from table_a a cross join table_b b 
    3 where instr(b.termid, a.termid) != 0 
    4 order by b.termno 
    5/

     ID TERMID     TERMNO 
---------- -------------------- ---------- 
101256585 1200096999     10 
101256748 1200097005     12 
101256810 126006233     17 
101256734 1190226408     18 

SQL> 

編輯

我想我有好點的是INSTR()是Oracle的功能。 MySQL也有它。但如果[sql]的意思是「SQL Server」,那麼你應該代替the CHARINDEX() function

0

爲什麼不一樣的東西:

select a.id 
     a.termid 
     b.termno 
    from Table-A A 
     Table-B B 
where B.TermID LIKE '%'+A.TermID+'%' 

工作?

相關問題