我的数据库中有以下记录:

hashtag -   description -   tags -  location -  time -  day

#social -  description - social media, facebook, social networking sites, social media, smartphone - usa - Tuesday

#php -  description - programming language, coding, open source - usa - Tuesday

#iphone -  description - smartphone, apple, iphone apps, costly phone, touch screen - usa - Tuesday

这里的标记是逗号分隔的值。
现在,如果用户搜索programming-结果将是2nd row
"coding"  - 2nd row
"smartphone" - 3rd & 1st row.
"iphone" - 3rd row

所以,这就像搜索标签或直接搜索散列关键字。第一列是hashkeyword。标记以逗号分隔存储在数据库中。
我正在使用find_in_set()进行此操作,但它似乎无法正常工作。
SELECT * FROM `hash`WHERE `hashtag` LIKE 'smartphone' OR find_in_set('smartphone', tags)

它只返回第一行即。
iphone -    iphone description - smartphone, apple, apps, touchscreen - India   - tuesday

但“smartphone”值也在第三行,所以它必须返回第一行和第三行。
我哪里做错了?或者有什么不同的方法来代替find_in_set()

最佳答案

find_in_set()的正确语法是:

SELECT *
FROM `tablename`
WHERE FIND_IN_SET( `column`, 'val1,val2' )

编辑:
您可以使用LIKE进行文本搜索:
SELECT *
FROM `tablename`
WHERE tags LIKE '%TAG%'

关于php - find_in_set()找不到所有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15610394/

10-10 12:31