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

如何在MySQL多列中匹配指定字符串并返回目标结果?

MySQL字符串匹配解决方案

根据你的需求——匹配目标字符串"XYZ London, UK"并返回id为1和3的记录,结合你的表结构和数据,这里有几种实用的查询方法:

1. 精准匹配城市与国家(最直接)

如果你的city字段专门存储城市名称,Address字段存储国家信息(从示例数据看是这样),直接精准匹配就能得到想要的结果:

SELECT id FROM your_table 
WHERE city = 'London' 
AND Address = 'UK';

这个查询会筛选出所有城市为London、地址(国家)为UK的记录,正好对应id1和3。

2. 模糊匹配地址中的关键词

如果你的地址信息是整合在单个字段里(比如Address存储完整的地址串,像id1的Address是"London BBA WER UK",id3的是"London XYZ WER UK"),可以用LIKE做模糊匹配,只要地址同时包含London和UK就返回:

SELECT id FROM your_table 
WHERE Address LIKE '%London%' 
AND Address LIKE '%UK%';

这种方式不限制是否包含XYZ,所以id1(无XYZ)和id3(有XYZ)都会被选中,完美符合你的需求。

要是之后需要兼顾XYZ的匹配(比如想同时包含有XYZ和无XYZ的记录),可以稍微调整条件:

SELECT id FROM your_table 
WHERE (Address LIKE '%London%' AND Address LIKE '%UK%')
AND (Address LIKE '%XYZ%' OR 1=1);

这里的OR 1=1相当于不对XYZ做强制要求,结果还是id1和3。

3. 全文索引优化(适合大数据量)

如果你的表数据很多,模糊匹配效率偏低,可以给相关字段创建全文索引来提速:
先创建索引:

ALTER TABLE your_table ADD FULLTEXT INDEX idx_city_address (city, Address);

然后用全文检索查询:

SELECT id FROM your_table 
WHERE MATCH(city, Address) AGAINST('London UK' IN BOOLEAN MODE);

这种方式比LIKE快很多,同样能匹配到包含这两个关键词的记录。

别忘了把代码里的your_table替换成你实际的表名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:17:38