1

2つのテーブルがあります。Table-AのTermIDからTable-BのTermIDまでを検索し、Table-AのようなtermIDがある場合は、次のように結果テーブルを取得します。
TermIDの長さは異なります。Table-Aの「like%」TermIDで検索する検索パターンはありません。 よろしく、
Table-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.IDTableA.TermIDTableB.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]が「SQLServer」を意味する場合は、CHARINDEX()関数を代入する必要があります。

于 2010-06-10T16:41:34.043 に答える