如何将逗号分隔的字符串与逗号分隔的mysql字段匹配

kpbwa7wx  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(500)

我正在尝试将逗号分隔的字符串与逗号分隔的mysql字段进行匹配。这应该再匹配一个逗号分隔的文本。
例子
字符串= apple, pineapple, grapes mysql字段= mango, oranges, apple 我试过了 MySQL IN 但只有当字符串与mysql字段完全匹配或者字符串中只有一个项时,它才起作用

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

也试过了 FIND_IN_SET 一点运气都没有。有人能告诉我如何做到这一点吗?谢谢你的帮助。

zour9fqk

zour9fqk1#

我觉得你的问题错了。你提到了

MySQL field = mango, oranges, apple

你的问题是

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

确保它是字段名还是字段值

cig3rfwq

cig3rfwq2#

为了实现上述结果与记录的匹配,执行以下脚本
创建临时表,输入字符串按行分隔

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

eeq64g8w3#

我想这个答案可能对你有帮助。只需将单元格值和查询值转换为一个数组,然后检查它们是否有匹配的值。

相关问题