2014-04-07 54 views
0

我想查找表中匹配模式(實際上是模式列表)中的所有記錄。SQL - 查找所有記錄在哪裏col像<pattern>

SELECT * FROM TABLENAME WHERE COL1 like'%number%';

號是一個列表,在另一個表的列中的所有值

編輯:

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

我正在從TABLE_A ID列表,我試圖查詢表-B其列存儲數以千計的xml文件。在這些XML文件中,我試圖尋找模式

<val>number</val> 

其中number在ID列表中。

+0

呦需要更具體。 – user2672165

+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

+0

但是我在另一個表中有成千上萬的記錄像 xxxx,我該如何循環它們或者更簡單的方法? – linoox

+0

@linoox我用另一個例子更新了我的答案。 – krokodilko

+0

謝謝Kordirko。我也更新了我的問題,如果這能更好地瞭解問題。我將嘗試修改您的解決方案以解決問題,或者修改問題:)。使用ID我會創建一個類似的模式並存儲在臨時表中並使用您的解決方案。 – linoox