mySQL查询以逗号分隔的列表值检查字符串

时间:2015-12-17 09:48:26

标签: mysql

我已经尝试了几个小时。并搜索以前的问题以获得正确的答案。

我有一个包含一段内容的表格,并且在单独的字段(逗号列表)中包含多个关键字,如下所示: keyword1,keyword2,keyword3

我现在尝试在文章标题中找到列表中的一个关键字时显示此内容。

目前我有:

SELECT * from conditional_content where LOWER(commaseplist) like '%article title goes here%' AND active=1

显然这不会起作用。其他答案似乎提到FIND_IN_SET,但我想我实际上比较了两个数组,一个是标题,另一个是逗号分隔列表。

我可以用PHP做到这一点,但这似乎在服务器上耗尽。

非常感谢任何帮助!

1 个答案:

答案 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, ",", "|" ), ")" );