我已经尝试了几个小时。并搜索以前的问题以获得正确的答案。
我有一个包含一段内容的表格,并且在单独的字段(逗号列表)中包含多个关键字,如下所示: keyword1,keyword2,keyword3
我现在尝试在文章标题中找到列表中的一个关键字时显示此内容。
目前我有:
SELECT * from conditional_content where LOWER(commaseplist) like '%article title goes here%' AND active=1
显然这不会起作用。其他答案似乎提到FIND_IN_SET,但我想我实际上比较了两个数组,一个是标题,另一个是逗号分隔列表。
我可以用PHP做到这一点,但这似乎在服务器上耗尽。
非常感谢任何帮助!
答案 0 :(得分:0)
你可以去这里:
SELECT * FROM your_table WHERE title REGEXP CONCAT( "(", REPLACE( keywordstring, ",", "|" ), ")" )
这会从您的关键字字符串中创建一个简单的正则表达式,并将其与您的标题相匹配。
这对我有用(第一条记录被选中,第二条记录不被选中):
CREATE TABLE `articles` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NULL DEFAULT NULL,
`keywords` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB;
INSERT INTO `pdok_main`.`articles` (`title`, `keywords`) VALUES ('Expert opinion on cars', 'expert,cars');
INSERT INTO `pdok_main`.`articles` (`title`, `keywords`) VALUES ('Expert opinion on train', 'experts,trains');
SELECT * FROM articles WHERE title REGEXP CONCAT( "(", REPLACE( keywords, ",", "|" ), ")" );