我想要一个像这样的 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/