web-dev-qa-db-ja.com

別の列のような列のSQL結合

可能性のある複製:
mysql join query using like?

1つの列に別のテーブルの列の文字列が含まれる結合を実行したい:

SELECT
a.first_name,
b.age
FROM names a
JOIN ages b
ON b.full_name LIKE '%a.first_name%'

これは可能ですか? MySQLを使用しています。もちろん、LIKE '%a.first_name%'は文字列a.first_nameを検索するだけで、列の実際の値を検索しないため、上記のクエリは機能しません。

19
Don P

文字列を連結するだけでよく、検索と置換を行うこともできます。

SELECT
    a.first_name,
    b.age
FROM names a
JOIN ages b
ON b.full_name LIKE '%' + a.first_name + '%'
38
colin-higgins

CONCATを使用できます。

SELECT
  a.first_name,
  b.age
FROM
  names a JOIN ages b
    ON b.full_name LIKE CONCAT('%', a.first_name, '%')

または [〜#〜] locate [〜#〜]a.first_nameb.full_nameが最初に現れる位置を返します。

SELECT
  a.first_name,
  b.age
FROM
  names a JOIN ages b
  ON LOCATE(a.first_name, b.full_name)

一致する場合、結合は成功します。

19
fthiella