Php 在\u集合()中查找\u未找到所有值
我的数据库中有以下记录:Php 在\u集合()中查找\u未找到所有值,php,mysql,sql,hashtag,Php,Mysql,Sql,Hashtag,我的数据库中有以下记录: 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 sou
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
这里的标记是逗号分隔的值
现在,如果用户搜索编程
,结果将是第二行
"coding" - 2nd row
"smartphone" - 3rd & 1st row.
"iphone" - 3rd row
因此,这就像搜索标签或直接搜索hash关键字一样。第一列是hashkeyword
。标记以逗号分隔存储在数据库中
我正在为此使用find\u 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()
?的正确语法是:
编辑:
您可以使用LIKE进行文本搜索:
SELECT *
FROM `tablename`
WHERE tags LIKE '%TAG%'
的正确语法是:
编辑:
您可以使用LIKE进行文本搜索:
SELECT *
FROM `tablename`
WHERE tags LIKE '%TAG%'
如果逗号后有空格,则
FIND\u IN\u SET
将无法正常工作
它将在智能手机、苹果、应用程序、触摸屏
中找到,但在苹果、智能手机、应用程序、触摸屏
中找不到
如果逗号后面有空格,请尝试使用。,然后
在集合中查找将无法正常工作
它将在智能手机、苹果、应用程序、触摸屏
中找到,但在苹果、智能手机、应用程序、触摸屏
中找不到
对于另一种解决方案,请尝试。我尝试了以下方法:SELECT*FROM hash WHERE FIND_IN_SET(“标记”、“智能手机”)但是,它不返回任何是,它不喜欢(像'%String %))或者它不在字符串中间搜索,这个答案是误导的。示例中的find_in_set用法是正确的。导致问题的逗号之前和/或之后的空格。您可以从数据库或查询中删除空格(尽管不推荐):FIND_IN_SET('smartphone',REPLACE(tags',',',','))
@J.K.A.从FIND_IN_SET(“smartphone”,tags)的散列中选择*;这会奏效的。对于列名,不需要“我尝试了这个:SELECT*FROM hash WHERE FIND_IN_SET(“tags”,“smartphone”);
,但它不返回任何内容是的,它不像(像“%string%”)这个问题的答案是错误的。这个例子中的FiffyIn集合用法是正确的。在逗号之前和/或逗号之后的空格导致问题。你可以像这样删除你的DB或查询中的空格(虽然不推荐):<代码> FiffyIn集(“智能电话”,替换(标签,‘,’,’,’))。
@J.K.A.从“智能手机”中的“查找”集合(“智能手机”,标签)中的散列中选择*;这将起作用。对于列名,不需要“