在mysql列中进行高级搜索,用逗号分隔的单词行

时间:2014-09-29 07:04:55

标签: php mysql

大家好,主题是说我正在寻找替代或高级使用“LIKE”。

我的列包含一行单词p.e. “keyword1,keyword2,another_keyword”以及何时使用

$sql = mysql_query("SELECT * FROM table WHERE `column` LIKE '%keyword1%' ");

它几乎找不到它。这个例子有效,但当我试图找到更短的字符串时,它有问题,有时它找不到任何东西。

我尝试在昏迷之后添加一个空格并且它有所帮助但是如果有一种方法我可以搜索匹配这个列的规范我会很高兴。

3 个答案:

答案 0 :(得分:0)

您可以将关键字移到单个表格中。

如果关键字列表没有更改,您可以使用SET字段类型。

答案 1 :(得分:0)

存储逗号分隔的单词列表是一个坏主意示例使用类似于您的方案很难找到逗号分隔列表中的确切工作而不是您可以添加与您当前表相关的新表并将每个单词存储在一个具有相关标识的新行,如

table1
id  title
1    test1
2    test2

kewords_table

table1_id word
1         word1
1         word2
1         word3

和查询将是

select t.*
from table1 t
join kewords_table k
  on(t.id = k.table1_id)
  where k.word = 'your_keyword'

如果您无法改变结构,可以使用find_in_set()

SELECT * FROM table WHERE find_in_set('your_keyword',`column`) > 0

答案 2 :(得分:0)

尝试这样的事情:

SELECT * FROM tablename
WHERE column LIKE '%keyword1%'
OR    column LIKE '%keyword2%';

有关详细信息,请参阅此处:Using SQL LIKE and IN together