You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL:如何检索列B中包含的列A词汇并返回对应词汇

MySQL中匹配列关键词并返回对应词汇的实现方法

场景1:行内匹配(检查每行的Column A是否存在于该行的Column B中)

如果是判断当前行的Column A词汇是否出现在该行的Column B字符串里,并返回匹配的Column A值,用CASE或IF结合模糊匹配即可实现:

使用CASE语句

SELECT 
  ColumnA,
  ColumnB,
  CASE 
    WHEN ColumnB LIKE CONCAT('%', ColumnA, '%') THEN ColumnA
    ELSE NULL -- 可替换为你需要的默认值,比如'无匹配关键词'
  END AS matched_keyword
FROM your_table;

使用IF函数(更简洁)

SELECT 
  ColumnA,
  ColumnB,
  IF(ColumnB LIKE CONCAT('%', ColumnA, '%'), ColumnA, NULL) AS matched_keyword
FROM your_table;

场景2:跨行匹配(找出Column B中包含的所有表内Column A词汇)

如果需要找出任意Column B字符串中包含的所有Column A词汇(一个Column B可能对应多个Column A),用自连接实现:

SELECT 
  t1.ColumnB,
  t2.ColumnA AS matched_keyword
FROM your_table t1
JOIN your_table t2 ON t1.ColumnB LIKE CONCAT('%', t2.ColumnA, '%')
ORDER BY t1.ColumnB;

若要避免同一Column B重复返回相同关键词,添加DISTINCT:

SELECT DISTINCT
  t1.ColumnB,
  t2.ColumnA AS matched_keyword
FROM your_table t1
JOIN your_table t2 ON t1.ColumnB LIKE CONCAT('%', t2.ColumnA, '%')
ORDER BY t1.ColumnB;

注意事项

  • CONCAT('%', ColumnA, '%')用于匹配Column B中任意位置的Column A词汇,前后的%是模糊匹配通配符。
  • 如果Column A包含MySQL模糊匹配的特殊字符(如%、_),需要用REPLACE转义,示例:
-- 用\作为转义符处理下划线
WHEN ColumnB LIKE CONCAT('%', REPLACE(ColumnA, '_', '\\_'), '%') ESCAPE '\\'

内容的提问来源于stack exchange,提问作者Ram charan T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:20:04