mysql - 如何提取MySQL字符串中的第n个单词并统计单词出现次数?

标签 mysql regex word-count

我想要一个像这样的 mysql 查询:

select <second word in text> word, count(*) from table group by word;

mysql中的所有正则表达式示例都是用于查询文本是否与表达式匹配,而不是从表达式中提取文本。有这样的语法吗?

最佳答案

以下是针对OP的特定问题(提取字符串的第二个单词)的建议解决方案,但应该注意的是,正如mc0e的答案所述,实际上不支持提取正则表达式匹配MySQL 中开箱即用。如果您确实需要这个,那么您的选择基本上是 1) 在客户端上进行后处理,或者 2) 安装 MySQL 扩展来支持它。

<小时/>

BenWells 的说法几乎是正确的。根据他的代码,这里有一个稍微调整过的版本:

SUBSTRING(
  sentence,
  LOCATE(' ', sentence) + CHAR_LENGTH(' '),
  LOCATE(' ', sentence,
  ( LOCATE(' ', sentence) + 1 ) - ( LOCATE(' ', sentence) + CHAR_LENGTH(' ') )
)

作为一个工作示例,我使用了:

SELECT SUBSTRING(
  sentence,
  LOCATE(' ', sentence) + CHAR_LENGTH(' '),
  LOCATE(' ', sentence,
  ( LOCATE(' ', sentence) + 1 ) - ( LOCATE(' ', sentence) + CHAR_LENGTH(' ') )
) as string
FROM (SELECT 'THIS IS A TEST' AS sentence) temp

这成功提取了单词IS

关于mysql - 如何提取MySQL字符串中的第n个单词并统计单词出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33126527/

相关文章:

c# - 在 Code First Entity Framework 中为数据库中的现有列添加属性到模型

php mysqli 准备好的语句删除查询问题

MySQL删除语句优化

php - 从任何 YouTube URL 获取 YouTube 视频 ID 的正则表达式模式

regex - 如何配置我的正则表达式点以匹配换行符?

python - 高级字符串的正则表达式

java - 从 Unicode 字符串中获取字数(任何语言)

java - Java 中的字数统计

c - 如何正确计算 C 中的单词、换行符和字符

php - 如何在 Laravel 中禁用 only_full_group_by 选项