2

サンプルとして、次の表を使用します。

コードのバリエーション:

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

登録コード:

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

CODE がCodeVariationsテーブルの任意の行のパターンと一致する場合に、 RegisteredCodesのすべての行を取得するクエリを作成することは可能ですか? つまり、またはのいずれかの LIKE パターンに一致するすべての行'ABC_012''DEF_024''JKLX048'

結果は次のようになります。

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

私は PostgreSQL を使用していますが、PostgreSQL またはその他の DB の単純なクエリでこれを実行できるかどうかを知ることは興味深いでしょう。

4

4 に答える 4

4

これはあなたが必要とすることをしますか?

select distinct RC.* from RegisteredCodes RC, CodeVariations CV
where RC.CODE LIKE CV.CODE;
于 2009-02-26T04:56:39.950 に答える
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

このようなものをお探しですか?

于 2009-02-26T05:00:25.450 に答える
0

Oracle と PostgreSQL では、1 文字のワイルドカード「_」を 1 文字にすることができます。

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) ;
于 2009-02-26T05:14:13.370 に答える