MySQL:使用REGEX提取字符串(选择REGEX)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

我希望有这样的MySQL查询:

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

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

提问于
用户回答回答于

在句子中提取第二个单词的较短的选项:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('THIS IS A TEST', ' ',  2), ' ', -1) as FoundText
用户回答回答于

以下是OP的建议解决方案专一问题(提取字符串的第二字),但应该注意的是,当mc0e的答案状态,实际提取regex匹配不支持在mysql的框外。如果您真的需要这样做,那么您的选择基本上是:(1)在客户端上进行后期处理,或者2)安装MySQL扩展以支持它。


这里有一个稍微调整过的版本:

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

扫码关注云+社区