我正在尝试执行mysql搜索(在php中),查找文本字段中的catid编号。我目前使用的是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%的所有内容?如果这说得通的话?
发布于 2012-04-16 12:08:02
使用function FIND_IN_SET,MySQL可以帮助您解决这个巨大的数据库设计错误。试一试:
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,但可能更难理解它的作用:)
https://stackoverflow.com/questions/10168583
复制相似问题