mysql 对多个字段模糊查询,返回第一个匹配的字段,箭头处为第一个匹配字段
17条回答 默认 最新
关注 获得0.60元问题酬金 🕗晚上好,题主!目前:🟢[在线]
📢参考通义千问、由郭老师整理提供!
📣今日诗号:山有木兮木有枝,心悦君兮君不知。SELECT *, CASE WHEN col1 LIKE '%keyword%' THEN 'col1' WHEN col2 LIKE '%keyword%' THEN 'col2' WHEN col3 LIKE '%keyword%' THEN 'col3' -- ... 添加更多字段 ELSE NULL -- 没有匹配项 END AS matched_column FROM your_table WHERE col1 LIKE '%keyword%' OR col2 LIKE '%keyword%' OR col3 LIKE '%keyword%' -- ... 添加更多字段 ;
代码解释:
- SELECT *, ...: 查询所有字段,并添加一个名为
matched_column
的计算字段。 - CASE WHEN ... THEN ... ELSE ... END: 使用 CASE 语句判断哪个字段匹配。
WHEN col1 LIKE '%keyword%' THEN 'col1'
: 如果col1
包含关键词,则matched_column
的值为 'col1'。- 重复上述逻辑,检查其他字段 (
col2
,col3
等)。 ELSE NULL
: 如果所有字段都不匹配,则matched_column
的值为 NULL。
- FROM your_table: 指定要查询的表名,请替换成你的实际表名。
- WHERE ...: 使用
OR
连接多个LIKE
条件,对多个字段进行模糊查询。col1 LIKE '%keyword%'
: 检查col1
是否包含关键词。- 重复上述逻辑,添加其他字段的查询条件。
使用方法:
- 将
your_table
替换为你的表名。 - 将
col1
,col2
,col3
替换为你要查询的字段名。 - 将
'keyword'
替换为你要搜索的关键词。 - 根据需要添加或删除 CASE 语句中的条件,以匹配所有需要查询的字段。
示例:
假设你的表名为
products
,包含name
,description
,category
三个字段, 你想搜索包含 "手机" 的记录,并返回第一个匹配的字段名:SELECT *, CASE WHEN name LIKE '%手机%' THEN 'name' WHEN description LIKE '%手机%' THEN 'description' WHEN category LIKE '%手机%' THEN 'category' ELSE NULL END AS matched_column FROM products WHERE name LIKE '%手机%' OR description LIKE '%手机%' OR category LIKE '%手机%' ;
这个查询会返回所有包含 "手机" 的记录,并在
matched_column
中标识第一个匹配的字段名。解决 1无用- SELECT *, ...: 查询所有字段,并添加一个名为
悬赏问题
- ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
- ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
- ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
- ¥15 SPSS分类模型实训题步骤
- ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
- ¥15 求解决扩散模型代码问题
- ¥15 工创大赛太阳能电动车项目零基础要学什么
- ¥20 limma多组间分析最终p值只有一个
- ¥15 nopCommerce开发问题
- ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL