1

我有两个表,我想通过 Table-B 中的 TermID 搜索 Table-A 中的 TermID,如果有类似 Table-A 中的 termID,然后想要得到如下所示的结果表。
TermID 的长度不同。没有搜索模式可以用“like %”搜索
表 A 中的 TermID 是表 B 中的 TermID 的
一部分

表-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
4

2 回答 2

0

为什么不这样:

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

工作?

于 2010-06-10T16:36:58.110 回答
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”,那么您应该替换CHARINDEX() 函数

于 2010-06-10T16:41:34.043 回答