带有like子句的Oracle连接查询

时间:2013-05-30 15:59:48

标签: oracle

我需要使用两个表的组合来获取结果。

select template_id 
from templatetbl 
where template_xml like '%889d-5765405edb42%'

在查询时我得到了24条记录。

现在我想用我之前获得的模板ID获取另一组记录。

select * 
from sites 
where site_xml like '%templateid%'.

我最早得到的是Templateid。

我尝试了这样的查询

select * 
from sites 
where site_xml like (select template_id 
                     from templatetbl 
                     where template_xml like '%889d-5765405edb42%')

但是因为单行子查询返回多行而得到错误。

请帮助合并两个查询

2 个答案:

答案 0 :(得分:1)

试试这个:

select * 
from sites 
where site_xml like (select '''%'||template_id||'%'''
                     from templatetbl 
                     where template_xml like '%889d-5765405edb42%')

答案 1 :(得分:0)

这应该这样做。一个简单的连接,您可以动态地构建LIKE字符串。

SELECT S.*
FROM   templatetbl T, sites S
WHERE  T.template_xml LIKE '%889d-5765405edb42%'
AND    S.site_xml     LIKE '%'||TO_CHAR(T.templateid)||'%'

编辑:请注意,这可能不是你想要的。由于templateid 1将匹配11011,... 21,... 100