mysql字符串逗号分隔如%,哪一个导致结果?%

时间:2012-05-23 19:32:51

标签: php sql string

我有一个非常复杂的问题,我和我的同事今天已经讨论了很长时间,我们似乎无法得到答案,想知道这里是否有人有一个我们错过的好主意。

$tags=mysql_real_escape_string($_GET["tags"]);
$tags="SELECT * FROM i WHERE tip LIKE '%".$tags;
$tags=str_replace(",","%' OR tip LIKE '%",$tags);
$tags=$tags."%'";
$qtags = mysql_query($tags) or die(mysql_error());

示例:$ tags ='word,phrase,term,foo,bar,anything'

标签从用户编写的段落中提取,然后与存储在“i”(sql数据库)中的段落进行比较。

我们面临的问题是如何识别哪个/哪个'标签'(在标签字符串之外)导致了结果。

示例:结果段落就像字符串$ tags中的'foo'标签,即'word,phrase,term,foo,bar,anything'我们如何识别foo作为原因?

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

SELECT
    CASE WHEN tip LIKE '%foo%' then 'foo'
         WHEN tip LIKE '%bar%' then 'bar'
         WHEN tip LIKE '%anything%' then 'anything'
    END as MatchedTag,
    i.*
FROM i
WHERE tip LIKE '%foo%'
   OR tip LIKE '%bar%'
   OR tip LIKE '%anything%'

需要根据您当前查询的$tags变量生成。