mysql在文本字段中搜索catid

时间:2012-04-16 04:02:17

标签: php mysql sql-like

我正在尝试在文本字段中对catid号进行mysql搜索(在php中)。我目前正在使用LIKE,但我需要它更具体。这是我的代码:

SELECT * FROM articlepix 
WHERE published = 1 AND catid LIKE '%86%' 
ORDER BY RAND() LIMIT 1

^^我正在寻找catid字段中的数字86,但我希望它只能查找86,目前它也用数字186取出数据。

上面的例子抓住了catid为“91,107,36,139,146,168,186”的字段。

是否可以仅搜索'86'而不是包含%86%的所有内容?如果这有意义吗?

1 个答案:

答案 0 :(得分:4)

MySQL可以帮助您使用函数FIND_IN_SET解决这个巨大的数据库设计错误。试一试:

SELECT * FROM articlepix 
WHERE published = 1 AND FIND_IN_SET('86', catid) > 0
ORDER BY RAND() LIMIT 1

当然可以简化为:

WHERE published = 1 AND FIND_IN_SET('86', catid)

由于该函数仅在没有匹配时返回0,但可能更难理解它的作用:)