mysql - 如何将逗号分隔的字符串与逗号分隔的 MySQL 字段匹配
问题描述
我正在尝试将逗号分隔的字符串与逗号分隔的 MySQL 字段进行匹配。这应该匹配另外一个逗号分隔的文本。
例子
字符串 =apple, pineapple, grapes
MySQL 字段 =mango, oranges, apple
我试过MySQL IN
了,但它只有在字符串与 MySQL 文件完全匹配或者字符串中只有一项的情况下才有效
SELECT * FROM table1 WHERE field_1 IN (‘string’)
也试过FIND_IN_SET
没有任何运气。谁能告诉我如何实现这一目标?感谢你的帮助。
解决方案
为了达到上述结果匹配记录,执行以下脚本
使用输入字符串作为行创建临时表,分隔
drop temporary table if exists temp;
create temporary table temp( val varchar(255) COLLATE utf8_unicode_ci )
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
set @sql = concat("insert into temp (val) values ('", replace(( select
group_concat(distinct ('mango,oranges,apple')) as data ), ",", "'),('"),"');");
prepare stmt1 from @sql;
execute stmt1;
将临时表与主表连接
select *
from
(
select distinct(val) as a from temp
)as splited
inner join
(
select 'apple, pineapple, grapes' as field
)as table1
where table1.field like concat('%',splited.a,'%');
推荐阅读
- c# - 无法为 MVC 中下拉列表的选定属性提供输入
- wpf - 语言特定的资源文件在 wpf 中的操作之间发生变化
- python - Jupyter Notebook 问题 - NoSuchModuleError:无法加载插件:sqlalchemy.dialects:snowflake`
- powershell - 在powershell命令中连接字符串和表达式结果
- python - 没有数组或函数的帕斯卡三角形的简单代码?
- java - 如何使用流和 1.8 函数连接 2 个列表?
- html - CSS Grid 中的元素拉伸
- vue.js - vee-validate 的 Vue-i18n 集成无法按照文档中的说明工作
- vue.js - Vue Watch 不会在页面刷新/重新加载时触发
- git - 卡在 git rebase ... 如何重置