Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como extrair a enésima palavra e contar ocorrências de palavras em uma string MySQL?


O seguinte é uma solução proposta para os específicos do OP problema (extrair a segunda palavra de uma string), mas deve-se notar que, como afirma a resposta do mc0e, a extração de correspondências regex não é suportada imediatamente no MySQL. Se você realmente precisa disso, suas escolhas são basicamente 1) fazer isso no pós-processamento no cliente, ou 2) instalar uma extensão MySQL para suportá-la.

BenWells tem quase correto. Trabalhando a partir de seu código, aqui está uma versão ligeiramente ajustada:
SUBSTRING(
  sentence,
  LOCATE(' ', sentence) + CHAR_LENGTH(' '),
  LOCATE(' ', sentence,
  ( LOCATE(' ', sentence) + 1 ) - ( LOCATE(' ', sentence) + CHAR_LENGTH(' ') )
)

Como exemplo de trabalho, usei:
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

Isso extrai com sucesso a palavra IS