在列中显示LIKE条件匹配

时间:2016-07-12 13:01:14

标签: sql oracle wildcard

我有类似的疑问:

SELECT fname, lname
FROM names
WHERE gcode LIKE %5536% OR fname LIKE %3663%

有50个这样的条件,这些条款有点长,但这是一般的想法。我们不能制作临时表,所以这就是我们要走的路。

我尝试返回输出在其自己的列中匹配的类似条件(即,在其自己的列中返回%5536%

我可以通过编程方式突出显示它,但有没有办法在SQL中执行此操作?

2 个答案:

答案 0 :(得分:5)

您可以将匹配条件存储在集合中:

SELECT n.fname,
       n.lname,
       t.COLUMN_VALUE AS match
FROM   name n
       INNER JOIN
       TABLE( SYS.ODCIVARCHAR2LIST( '%5536%', '%3663%' ) ) t
       ON ( n.gcode LIKE t.COLUMN_VALUE );

答案 1 :(得分:1)

您可以在SQL中执行此操作。这是一种方法:

select n.*
from (select n.*,
             ((case when gcode LIKE %5536%  then '5536;' end) ||
              (case when gcode LIKE %3663%  then '3663;' end) ||
              . . .
             ) as matches
      from names
     ) n
where matches is not null;