我希望有一个这样的mysql查询:
select <second word in text> word, count(*) from table group by word;
mysql中的所有正则表达式示例都用于查询文本是否与表达式匹配,而不是用于从表达式中提取文本。有这样的语法吗?
发布于 2010-10-26 16:27:28
以下是针对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
发布于 2012-09-07 19:51:26
提取句子中第二个单词的Shorter选项:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('THIS IS A TEST', ' ', 2), ' ', -1) as FoundText
发布于 2010-10-26 16:02:28
根据http://dev.mysql.com/的说法,SUBSTRING函数使用起始位置,然后是长度,所以第二个单词的函数肯定是:
SUBSTRING(sentence,LOCATE(' ',sentence),(LOCATE(' ',LOCATE(' ',sentence))-LOCATE(' ',sentence)))
https://stackoverflow.com/questions/4021507
复制相似问题