一致条件に、あるテーブルの列に別のテーブルの列の部分文字列が含まれる場合、JOIN 操作を実行するにはどうすればよいでしょうか?

Susan Sarandon
リリース: 2024-10-26 18:29:29
オリジナル
382 人が閲覧しました

How can you perform a JOIN operation where the matching condition involves a column from one table containing a substring of a column from another table?

SQL JOIN 内での LIKE の使用

SQL で JOIN 操作を実行するには、多くの場合、異なるテーブルの列間の一致条件を指定する必要があります。このような条件の 1 つは、テーブル A の列をテーブル B の列と照合することです。ここで、列 B の内容は列 A の内容の前後で異なる可能性があります。このシナリオでは、LIKE 演算子の使用が必要です。

これを実現するには、いくつかのオプションがあります:

  1. INSTR の使用:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON INSTR(b.column, a.column) > 0</code>
ログイン後にコピー

ここで、INSTR() は最初の位置を返します。列 B 内の列 A の値の出現。一致する行は、位置が 0 より大きい行です。

  1. LIKE を直接使用する:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>
ログイン後にコピー

このメソッドは、列 A の値の両側にワイルドカードを追加し、列 B 内でその前後に任意の文字を配置できるようにします。

  1. CONCAT で LIKE を使用する:
<code class="sql">SELECT *
FROM TABLE a
JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
ログイン後にコピー

前のアプローチと同様に、このメソッドは CONCAT() 関数を使用して列 A の値の両側にワイルドカードを含む文字列を構築します。

大文字と小文字を区別しない一致を保証するには、次のようにします。比較する前に両方の列を大文字に変換することをお勧めします。これは、UPPER() 関数を使用して実現できます。

最も効率的な方法は、EXPLAIN プランの出力を調べることによって決定される、関係する特定のデータベースとデータによって異なることに注意してください。

以上が一致条件に、あるテーブルの列に別のテーブルの列の部分文字列が含まれる場合、JOIN 操作を実行するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!