是的,这是一个被打死的问题,但我相信它有点不同。
请考虑此MySQL表test
:
所需的结果集是:
简而言之,如何使用 完全 此字符串选择前3条记录(id
s 1,2,5) - ' 电影院,娱乐'并在 一个查询 ?也就是说,如果即使一个单词' 匹配,如何将A
与上面的字符串进行比较并让它返回记录?
尝试了以下内容:
SELECT * FROM test WHERE A LIKE "%Cinema, Entertainment%"
SELECT * FROM test WHERE INSTR(A, 'Cinema, Entertainment') > 0
两者都只返回第一条记录,进行完全匹配。
SELECT * FROM test WHERE A LIKE '%Cinema%' OR A LIKE '%Entertainment%'
确实有效,但我不想对可用字符串进行标记。该字符串也可以有多个CSV
s。
正则表达式非常新,似乎无法形成正确的查询。
看过这些很酷的答案,
......但仍在苦苦挣扎。
提前致谢!
答案 0 :(得分:1)
以下查询将有助于满足此要求。但是你需要确保A列FULLTEXT索引。
ALTER TABLE `test` ADD FULLTEXT(`A`);
SELECT * FROM `test` WHERE (match(A) against('Cinema, Entertainment' IN BOOLEAN MODE));
答案 1 :(得分:0)
使用mysql FIND_IN_SET
函数获得所需的结果。
select * from `test` where find_in_set('Cinema',`A`) OR find_in_set('Entertainment',`A`);