SQL加入列LIKE另一列

Don*_*n P 21 mysql sql join sql-like

可能重复:
使用mysql连接查询?

我想做一个连接,其中一列包含来自另一个表的列的字符串:

SELECT
a.first_name,
b.age
FROM names a
JOIN ages b
ON b.full_name LIKE '%a.first_name%'
Run Code Online (Sandbox Code Playgroud)

这可能吗?我正在使用MySQL.当然上面的查询将不起作用,因为LIKE'%a.first_name%'将仅查找字符串a.first_name,而不是列的实际值.

col*_*ins 42

您只需要连接字符串,您也可以进行搜索和替换.

SELECT
    a.first_name,
    b.age
FROM names a
JOIN ages b
ON b.full_name LIKE '%' + a.first_name + '%'
Run Code Online (Sandbox Code Playgroud)

  • 使用`ON b.full_name LIKE CONCAT('%',a.first_name,'%')更适合我. (9认同)
  • 此解决方案适用于 SQL Server,不适用于 MYSQL (3认同)

fth*_*lla 19

你可以使用CONCAT:

SELECT
  a.first_name,
  b.age
FROM
  names a JOIN ages b
    ON b.full_name LIKE CONCAT('%', a.first_name, '%')
Run Code Online (Sandbox Code Playgroud)

或也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)
Run Code Online (Sandbox Code Playgroud)

如果匹配,则加入将成功.

  • LOCATE()很有意思,当字符串存在于b.full_name中时,它只返回一个非零值,否则返回false? (2认同)