mysql - 如何用mysql从数据库字段中获取#word?

标签 mysql regex hashtag

我有一个名为“vCaption”的数据库字段名称,其中包含句子。 在那些句子中的某处,有些单词的开头带有# 符号。我需要那个句子的特定词。如果记录中不存在#符号词,则返回null。

例如,

“我的#childhood image from #1992 with my #Dad”

我的表中有以上记录。

我只需要下面这三个词。

童年,1992 年,爸爸。

我尝试了 REGEX 和其他 mysql 函数,但它没有得到我真正需要的东西。 请在这里帮助我。

SELECT vCaption FROM tbl_post WHERE vCaption REGEXP '(?<= #|^#)\S*'

我已经写了上面的查询。它返回错误

“#1139 - 从正则表达式中得到错误‘重复操作符操作数无效’”

最佳答案

要选择单词以 # 开头的行,您可以使用:

SELECT mycolumn FROM mytable WHERE mycolumn REGEXP "#[[:alnum:]]+";

但这只会选择您想要的行,而不是所有的单词。

你可以:

  • 尝试使用MySQL string functions 转换SELECT 中的mycolumn删除不需要的词...坦率地说,不确定这是否可能。
  • 用您的语言对选定的行进行后处理,以提取您想要的词。例如,在 PHP 中,preg_match_all("~#[[:alnum:]]+~", $yourstring, $m) 会将所有#words 返回到 $m[0]

关于mysql - 如何用mysql从数据库字段中获取#word?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567509/

相关文章:

mysql - SQL alter table 在 MySQL 中有效,但在 Oracle 中无效

java 正则表达式 - 匹配除少数字符串之外的所有字符串

javascript - 为什么URI-encoded ('#' ) anchors会导致404,JS中如何处理?

twitter-oauth - 如何获取主题标签的所有推文计数

python - 如何判断一个正则表达式是否匹配另一个正则表达式的子集?

http - 本地 html 或文件 URL 的 ShellExecute 失败

php - Laravel 5.4 查询检查数组的键/值之间是否存在值

mysql多对多关系

php - 在结果中提供同义词或提供更正的搜索功能

c# - 正则表达式查找 'good enough' 序列