我正在尝试将逗号分隔的字符串与逗号分隔的MySQL字段进行匹配。这应该再匹配一个逗号分隔的文本。
示例
字符串= apple, pineapple, grapes
MySQL字段= mango, oranges, apple
我尝试了MySQL IN
,但只有在字符串与MySQL归档的字符串完全匹配或字符串中只有一项的情况下,它才有效
SELECT * FROM table1 WHERE field_1 IN (‘string’)
也尝试了FIND_IN_SET
,但没有任何运气。谁能告诉我如何实现这一目标?感谢您的帮助。
答案 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’)
确保它是字段名称还是字段值