2009-02-26 31 views
2

使用這些表,作爲一個樣本:SQL中是否有可能與子查詢中的記錄列表中的LIKE匹配?

CodeVariations

CODE 
----------- 
ABC_012 
DEF_024 
JKLX048 

RegisteredCodes

CODE  AMOUNT 
-------- ------ 
ABCM012   5 
ABCK012  25 
JKLM048  16 

是否可以編寫一個查詢來檢索RegisteredCodes所有行當代碼匹配中的模式時任何CodeVariations表?也就是說,匹配要麼'ABC_012''DEF_024''JKLX048'

結果的LIKE模式應該是任何行:

CODE  AMOUNT 
-------- ------ 
ABCM012   5 
ABCK012  25 

我使用PostgreSQL,但它會很想知道,如果有可能做這在一個簡單的查詢PostgreSQL或任何其他數據庫。

回答

4

這是否做你所需要的?

select distinct RC.* from RegisteredCodes RC, CodeVariations CV 
where RC.CODE LIKE CV.CODE; 
+0

如果您想要允許CODEVARIATIONS.CODE 這樣的數據中沒有發生這種情況,但是存在可能的代碼變化它可以在哪裏。 – 2009-02-26 06:05:03

0

這是你正在尋找:

SELCET * FROM RegisteredCodes RC WHERE RC.Code IN (SELECT CODE FROM CodeVariations WHERE CODE LIKE ('ABC%') AND CODE LIKE ('%012') 

這將獲取所有以「ABC」開始,以「012」和「DEF」和‘JKL’類似的目的備案。
OR

你在尋找類似this

0

在Oracle & PostgreSQL你可以單個字符通配符「_」爲單個字符。

select RC.* from RegisteredCodes RC, CodeVariations CV 
where RC.CODE LIKE 'ABC_012'; 

使用的串

select RC.* from RegisteredCodes RC, CodeVariations CV 
where RC.CODE LIKE substring(CV.Code,1,3)||'_'||substring(CV.Code,5) ; 
0
select * from CAT_ITEM where DESCRICAO LIKE '%TUBO%%PVC%%DNR%' 

所有像列表是一個字符串。

相關問題