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

如何在含额外符号的查询值下匹配MySQL列中的行数据?

解决方法

你的问题核心是待匹配的字符串比数据库中存储的name值多了", D.C."后缀,之前的LIKE语句都是用长字符串作为匹配模板去匹配短的name,自然返回空结果。可以用以下几种方法匹配到目标行:

方法1:提取待匹配字符串的核心部分匹配

通过字符串函数截取掉待匹配字符串里的", D.C.",只保留"Washington"部分再和name匹配:

SELECT * FROM 你的表名 
WHERE name = TRIM(SUBSTRING_INDEX('Washington, D.C.', ',', 1));

SUBSTRING_INDEX会截取到第一个逗号前的内容,TRIM用来去除可能存在的空格(如果你的待匹配字符串是"Washington , D.C."这种带空格的情况)。

方法2:反向匹配前缀

反过来判断数据库中的name是否是待匹配字符串的前缀:

SELECT * FROM 你的表名 
WHERE 'Washington, D.C.' LIKE CONCAT(name, '%');

这个逻辑是:只要待匹配字符串以name的值开头,就会匹配成功,正好符合你的场景。

方法3:正则表达式匹配

用正则判断待匹配字符串是否以name的值开头:

SELECT * FROM 你的表名 
WHERE 'Washington, D.C.' REGEXP CONCAT('^', name);

^表示正则的起始匹配位置,确保name的值是待匹配字符串的开头部分。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:41:01