选择查询以在另一个表中执行数据存在,其中数据需要拆分并且每个部分都需要检查

时间:2013-01-17 13:17:23

标签: sql oracle plsql

我不想使用任何功能或任何程序。

我想要简单的选择查询来检查字符串各部分的存在。

就像我有一个名为列

的表格虚构
                         Id     name 
                          1   as;as;as
                          2    asd;rt

和子表

                       child_id       name
                          23           as
                          24           asd
                          25           rt

所以我能做到的任何事情

我试过像

select substr(first_name,1,instr(first_name,';')-1) from dummy;
select substr(first_name,instr(first_name,';')+1,instr(first_name,';')-1) 
                                                               from dummy;

仅提供第一/第二部分,但仅提供其他部分 如何获得其他部分

2 个答案:

答案 0 :(得分:0)

如果我做得对 - 如果孩子的NAME包含在DUMMY.Name中,则需要加入这些表

SQLFiddle example

select t1.*, 
       t2.child_id, 
        t2.name as t2name 
from t1
left join t2 on (';'||t1.name||';' like '%;'||t2.name||';%')

答案 1 :(得分:0)

我需要有关此问题的更多信息。我们不知道您是否必须在一个字段上检测到多个可能的字符串。

您可以在三种可能的场景中使用三个like子句

  1. LIKE column_name ||'%;'
  2. LIKE'%;'||列名
  3. LIKE';%'|| column_name ||'%;'
  4. 但是对于未来学习构建正则表达式可能会更好。这是一个帮助我很多的网页:txt2re.com