【问题标题】:Sql (partial) search in a list and get matched fieldsSql(部分)在列表中搜索并获取匹配的字段
【发布时间】:2010-06-10 16:30:02
【问题描述】:

我有两个表,我想通过 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

【问题讨论】:

    标签: sql search match sql-like partial


    【解决方案1】:

    您的预期结果集错误: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

    【讨论】:

      【解决方案2】:

      为什么不这样:

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

      工作?

      【讨论】:

        猜你喜欢
        • 2013-09-24
        • 2019-02-13
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 2017-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多