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

时间:2018-07-27 08:25:57

标签: mysql mysqli pdo

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

示例

字符串= apple, pineapple, grapes

MySQL字段= mango, oranges, apple

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

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

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

3 个答案:

答案 0 :(得分:3)

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

  

创建临时表,将输入字符串分隔为行,

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

答案 1 :(得分:0)

我认为this answer可能会对您有所帮助。只需将单元格值和查询值转换为数组,然后检查它们是否具有匹配值即可。

答案 2 :(得分:0)

我觉得您的问题是错的。 您提到的是

MySQL field = mango, oranges, apple

您的查询是

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

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