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

MySQL查询:如何忽略变量中的DE/(DE)词汇匹配目标记录?

解决含DE/(DE)词汇的模糊查询问题

问题背景

现有MySQL表t_vias,表结构及初始化数据如下:

CREATE TABLE `t_vias` (
`id` int(11) NOT NULL,
`cpro` varchar(2) NOT NULL,
`cmum` varchar(3) NOT NULL,
`cpos` varchar(5) NOT NULL,
`mun` varchar(75) NOT NULL,
`via` varchar(100) NOT NULL);
 
INSERT INTO t_vias VALUES
("6021","28","079","28016","MADRID","GOYA, FRANCISCO DE"),
("6022","28","079","28016","MADRID","FRANCISCO GOYA"),
("6896","28","079","28001","MADRID","GOYA, DE"),
("6897","28","079","28001","MADRID","GOYA (DE)"),
("6900","28","079","28001","MADRID","CALLE GOYA"),
("6901","28","079","28001","MADRID","CALLE DE GOYA");

当前查询存在的问题:

  • 当PHP变量为CALLE DE GOYA时,精确查询SELECT * FROM t_vias WHERE via = 'CALLE DE GOYA';能正确返回对应记录;
  • 模糊查询SELECT * FROM t_vias WHERE via LIKE '%GOYA%';能返回所有含GOYA的记录;
  • 但当变量为DE GOYA时,执行SELECT * FROM t_vias WHERE via LIKE '%DE GOYA%';仅返回1条记录,无法匹配其他含GOYA但DE位置不同的记录。

需求:当查询变量包含DE、(DE)这类词汇时,忽略这些词汇,仅查询包含核心词汇(如GOYA)的所有记录。

解决方案

方法1:PHP端预处理查询字符串,提取核心词汇

在应用层先对输入变量做清洗,移除无关词汇后再拼接查询语句,逻辑更清晰且性能更优:

$input = "DE GOYA";
// 定义需要过滤的无关词汇
$filterWords = ['DE', '(DE)'];
// 替换无关词汇为空,再清理多余空格并拆分出核心关键词
$processedStr = str_replace($filterWords, '', $input);
$keywords = array_filter(explode(' ', trim($processedStr)));
// 拼接多关键词模糊查询语句(支持多个核心词汇)
$sql = "SELECT * FROM t_vias WHERE via LIKE '%".implode("%' AND via LIKE '%", $keywords)."%';";

方法2:MySQL端直接处理字段或查询参数

如果需要在SQL层面完成处理,可以使用REPLACE函数移除无关内容后匹配:

-- 直接处理表字段,移除DE/(DE)后匹配核心词汇
SELECT * FROM t_vias 
WHERE REPLACE(REPLACE(via, '(DE)', ''), 'DE', '') LIKE '%GOYA%';

若查询参数是动态传入的,也可以先处理参数再匹配:

SET @input = 'DE GOYA';
-- 清理参数中的无关词汇
SET @cleanInput = TRIM(REPLACE(REPLACE(@input, '(DE)', ''), 'DE', ''));
-- 拼接模糊匹配规则
SET @matchPattern = CONCAT('%', @cleanInput, '%');
SELECT * FROM t_vias WHERE via LIKE @matchPattern;

方法3:正则表达式匹配(MySQL 8.0+适用)

如果需要更灵活的匹配规则,可使用REGEXP函数直接匹配核心词汇:

SELECT * FROM t_vias WHERE via REGEXP 'GOYA';

核心逻辑是跳过DE、(DE)这类干扰项,直接匹配目标关键词。


内容的提问来源于stack exchange,提问作者Dummy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:25:33