首页 > 解决方案 > 如何将逗号分隔的字符串与逗号分隔的 MySQL 字段匹配

问题描述

我正在尝试将逗号分隔的字符串与逗号分隔的 MySQL 字段进行匹配。这应该匹配另外一个逗号分隔的文本。

例子

字符串 =apple, pineapple, grapes

MySQL 字段 =mango, oranges, apple

我试过MySQL IN了,但它只有在字符串与 MySQL 文件完全匹配或者字符串中只有一项的情况下才有效

SELECT * FROM table1 WHERE field_1 IN (‘string’)

也试过FIND_IN_SET没有任何运气。谁能告诉我如何实现这一目标?感谢你的帮助。

标签: mysql

解决方案


为了达到上述结果匹配记录,执行以下脚本

使用输入字符串作为行创建临时表,分隔

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,'%');

推荐阅读