SQL - 查找col之类的所有记录,如<pattern> </pattern>

时间:2014-04-07 19:19:03

标签: sql oracle

我想在表中找到与模式匹配的所有记录(实际上是模式列表)。

  

SELECT * FROM TABLENAME WHERE COL1喜欢'%number%';

number是一个列表,所有值都在另一个表的列中

编辑:

SELECT * FROM TABLENAME WHERE COL1 like '%<val>number</val>%';

我从TABLE_A得到一个列表ID,我试图查询TABLE_B,其列存储了数千个xml文件。在这些xml文件中,我试图寻找模式

<val>number</val> 

其中number在ids列表中。

1 个答案:

答案 0 :(得分:0)

使用UNION ALL运算符和基本联接:

SELECT t.* 
FROM TABLENAME t
JOIN(
   SELECT '<val>123</val>' As pattern FROM dual UNION ALL
   SELECT '<val>245</val>' FROM dual UNION ALL
   SELECT '<val>234</val>' FROM dual UNION ALL
   SELECT '<val>323</val>' FROM dual UNION ALL
   SELECT '<val>163</val>' FROM dual 
) p
ON t.col1 LIKE '%' || p.pattern || '%'

演示:http://sqlfiddle.com/#!4/a914f/2


修改


如果有另一个包含模式值的表,则该任务更加简单,只需:

SELECT t.* 
FROM TABLENAME t
JOIN AnotherTable p
ON t.col1 LIKE '%' || p.pattern || '%'

演示:http://sqlfiddle.com/#!4/e0318/1