0

只想知道如果“内容”字段包含主题标签,我如何使用 mysql 过滤掉结果。

例如,如果结果内容是:“#Euro2012 is going to be awesome”

我不会在我的 MySQL 结果中返回这个......

提前致谢

4

2 回答 2

4

使用regexand preg_match_all(),你可以有这样的东西:

$str = <<<STR
this is a string
with a #tag and
another #hello one
STR;

$matches = array();
if (preg_match_all('/#([^\s]+)/', $str, $matches)) {
  var_dump($matches[1]);
}

这给出了以下输出:

array
  0 => string 'tag' (length=3)
  1 => string 'hello' (length=5)

而且,如果您需要对这些进行更多操作,您应该查看手册的 PCRE 函数部分:还有一些其他的可能对您有所帮助。

于 2012-12-14T13:56:30.427 回答
3

对于 varchar 字段,您可以使用LIKE

SELECT * FROM myTable WHERE myVarCharField NOT LIKE '%#Euro2012%'

对于文本字段,您需要查看全文搜索

更新(由评论建议):

正则表达式解决方案:

SELECT * FROM myTable WHERE myVarCharField NOT RLIKE '#.*\s'

如果要按以主题标签开头的字段进行过滤,请添加^到正则表达式。

于 2012-05-10T15:05:05.223 回答