mysql search for a catid in a text field

我的未来我决定 提交于 2019-12-22 13:54:19

问题


I'm trying to do a mysql search (in php) for a catid number within a text field. I'm currently using LIKE but I need it more specific. Here's my code:

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

^^ I'm looking for the number 86 within the catid field, but I want it to look for only 86, currently it's pulling out the data with the number 186 too.

The above example grabs the field where the catid is "91,107,36,139,146,168,186".

Is it possible to search for just '86' rather than everything that includes %86%? If that makes sense?


回答1:


MySQL can help you workaround this huge database design errors with function FIND_IN_SET. Give this a try:

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

Which of course can be simplified into:

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

As the function only returns 0 when there is no match, but it might be harder to understand what it does :)



来源:https://stackoverflow.com/questions/10168583/mysql-search-for-a-catid-in-a-text-field

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!