Oracle查询在一个表达式中有两个paterns

时间:2015-11-24 11:51:43

标签: oracle oracle11g

输入:

TABLE NAME: SEARCH_RECORD

Column A   Column B  Column C  Column D
ID          CODE      WORD      CODE/WORD
--------------------------------------------
123          666Ani       RAT       666Ani/RAT
124          777Cae       CAT       777Cae/CAT

我需要一个查询来检查LIKE情况

如果我在列B中搜索类似于'%6A'或列C'%A%'它会给出结果

假设我希望根据D列搜索

获得类似内容
**User will search like '%6A%'/'%AT%' (always / will be given by user)** 

预期输出:

    666Ani/RAT

所以,我需要查询上面的内容以获取ID作为输出(最好是CASE查询)

需要你宝贵的建议

1 个答案:

答案 0 :(得分:1)

它不能像简单的那样完成。 如果模式看起来像'%6A%/%AT%',它应该有效。这是一种有效的模式。

所以,如果来自不同的变量,你可以写:columnD like '%6A%/%AT%'columnD like first_pattern||'/'||second_pattern

另一种方法,如果您确定只有/(可以查看它们的数量),可能会使用like来使用两个substr来获取第一个,然后是搜索字符串的第二部分。

where
  columnB like substr(match_string, 1, instr(match_string,'/'))
  and 
  columnC like substr(match_string, instr(match_string,'/')+1)