我是在正确的轨道上..两个表之间的匹配匹配(SQL)

时间:2018-05-23 22:46:59

标签: sql

我是一个SQL菜鸟,我想知道是否有人可以给我 对以下问题有所帮助: 所以我有两张桌子"学校"和#34;教师"。 " search_key" "学校" table是一个大字符串 结合教师姓名和其他元素(例如:"ENGLISH | JANE | [90, 56]) 所以我要做的就是匹配列中的字符串" name" #34;老师"使用前一个表格,获取匹配的单元格。

SELECT * FROM(

SELECT substr(a.search_key, 6, instr(a.search_key, '|'))

  FROM schools a

  ) JOIN teachers s ON a.search_key = s.search_key

这就是我一直在尝试做的事情,子串并尝试匹配,但到目前为止还没有运气。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定为什么会比这更复杂:

this.dataService.getData()
      .pipe(
        tap(console.log),
        tap(data => doStuff(data)))
      ).subscribe();

答案 1 :(得分:0)

这应该让你去 -

WITH SCHOOLS AS (
    SELECT
        'ENGLISH | JANE | [90,56]' AS SEARCH_KEY
    FROM
        DUAL
),TEACHER AS (
    SELECT
        'JANE' AS NAME
    FROM
        DUAL
) SELECT
    S.SEARCH_KEY
FROM
    SCHOOLS S,
    TEACHER T
WHERE
    S.SEARCH_KEY LIKE '%' || T.NAME || '%';
  

输出 -

SEARCH_KEY
ENGLISH | JANE | [90, 56]

另一种方法是 -

WITH SCHOOLS AS (
    SELECT
        'ENGLISH | JANE | [90,56]' AS SEARCH_KEY
    FROM
        DUAL
),TEACHER AS (
    SELECT
        'JANE' AS NAME
    FROM
        DUAL
) SELECT
    S.SEARCH_KEY
FROM
    SCHOOLS S,
    TEACHER T
WHERE
      TRIM(REGEXP_SUBSTR(S.SEARCH_KEY,'(\S*)(\W)',1,3)) = T.NAME;

如果名称始终是SEARCH_KEY字段中的第二个字段值,则无效|