SQL での LIKE 結合の実行
結合を使用して 2 つのテーブル間の値を照合する場合、1 つのテーブルの列が一致しない場合があります。別のテーブルの列の一部と一致する必要があります。これは、結合条件で LIKE 演算子を使用することで実現されることがよくあります。
2 つのテーブル、テーブル A とテーブル B があり、テーブル A の列 A が「like」であるという条件でそれらを結合したいとします。表 B の列 B。これは、一致には列 B の完全な値、またはその前後の文字が含まれる可能性があることを意味します。
使用INSTR:
1 つの方法は、結合条件で INSTR() 関数を使用することです:
SELECT *
FROM TABLE A
JOIN TABLE B ON INSTR(B.columnB, A.columnA) > 0
LIKE を使用する:
もう 1 つのオプションは、ワイルドカードを使用して LIKE 演算子を使用することです:
SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE '%' A.columnA '%'
LIKE と CONCAT を使用する:
ワイルドカード記号を列と連結することもできますCONCAT() 関数を使用した値:
SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE CONCAT('%', A.columnA ,'%')
大文字変換:
大文字と小文字を区別しない一致を保証するには、次のようにします。比較する前に列の値を大文字に変換することをお勧めします:
SELECT *
FROM (SELECT UPPER(A.columnA) 'ua' FROM TABLE A) A
JOIN (SELECT UPPER(B.columnB) 'ub' FROM TABLE B) B ON INSTR(B.ub, A.ua) > 0
効率に関する考慮事項:
ANSI JOIN と非 ANSI JOIN:
ANSI JOIN は標準化された構文に従いますが、非 ANSI JOIN は標準化された構文に従います。 ANSI JOIN は、より伝統的な構文を使用します。この場合、JOIN 句は、非 ANSI JOIN:SELECT *
FROM TABLE A,
TABLE B
WHERE INSTR(B.columnB, A.columnA) > 0
ANSI JOIN を使用すると、WHERE 句で結合条件をフィルター条件から分離できるという利点があります。 免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3