sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo extraer la enésima palabra y contar las ocurrencias de palabras en una cadena MySQL?

La siguiente es una solución propuesta para el específico del OP problema (extraer la segunda palabra de una cadena), pero debe tenerse en cuenta que, como dice la respuesta de mc0e, MySQL realmente no admite la extracción de coincidencias de expresiones regulares. Si realmente necesita esto, entonces sus opciones son básicamente 1) hacerlo en el posprocesamiento en el cliente, o 2) instalar una extensión de MySQL para admitirlo.

BenWells lo tiene casi correcto. A partir de su código, aquí hay una versión ligeramente modificada:

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

Como ejemplo práctico, utilicé:

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

Esto extrae con éxito la palabra IS