sql >> Databasteknik >  >> RDS >> Mysql

Hur extraherar man det n:te ordet och räknar ordförekomster i en MySQL-sträng?

Följande är ett förslag till lösning för OP:s specifika problem (extrahera det andra ordet i en sträng), men det bör noteras att, som mc0es svar anger, att faktiskt extrahera regex-matchningar inte stöds direkt i MySQL. Om du verkligen behöver detta, är dina val i princip att 1) ​​göra det i efterbehandling på klienten, eller 2) installera ett MySQL-tillägg för att stödja det.

BenWells har det nästan korrekt. Arbetar från hans kod, här är en något justerad version:

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

Som ett fungerande exempel använde jag:

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

Detta extraherar framgångsrikt ordet IS



  1. Aktivera fjärransluten MySQL-anslutning:FEL 1045 (28000):Åtkomst nekad för användaren

  2. PHP - Använder PDO med IN-klausul array

  3. 2 sätt att returnera rader som endast innehåller alfanumeriska tecken i PostgreSQL

  4. Hur man hittar SQL Server Agent-jobb i Azure Data Studio