sql >> データベース >  >> RDS >> Mysql

SQLの結合でlikeを使用する方法は?

    INSTR を使用する :

    SELECT *
      FROM TABLE a
      JOIN TABLE b ON INSTR(b.column, a.column) > 0
    

    LIKEの使用:

    SELECT *
      FROM TABLE a
      JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'
    

    CONCATでLIKEを使用する:

    SELECT *
      FROM TABLE a
      JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')
    

    すべてのオプションで、大文字と小文字の区別を気にせずに一致することを確認するために、比較する前に列の値を大文字に変換することをお勧めします。

    SELECT *
      FROM (SELECT UPPER(a.column) 'ua'
             TABLE a) a
      JOIN (SELECT UPPER(b.column) 'ub'
             TABLE b) b ON INSTR(b.ub, a.ua) > 0
    

    最も効率的なのは、最終的にはEXPLAINプラン に依存します。 出力。

    JOIN 句はWHEREを書くのと同じです 条項。 JOIN 構文は、標準化されているため、ANSIJOINとも呼ばれます。非ANSI結合は次のようになります:

    SELECT *
      FROM TABLE a,
           TABLE b
     WHERE INSTR(b.column, a.column) > 0
    

    非ANSILEFTJOINの例を気にするつもりはありません。 ANSI JOIN構文の利点は、テーブルを結合しているものを、WHEREで実際に起こっていることから分離することです。 条項。



    1. Oracleディクショナリ・ビューを使用してPL/SQLパッケージレベルのタイプを検出

    2. 内部結合と外部結合;テーブルの順序は重要ですか?

    3. Mysqlパスワードの有効期限が切れました。接続できません

    4. 予防トリガー