sql >> Database >  >> RDS >> Mysql

Hoe het n-de woord extraheren en woordexemplaren tellen in een MySQL-tekenreeks?

Het volgende is een voorgestelde oplossing voor de specifieke probleem (extraheren van het 2e woord van een string), maar het moet worden opgemerkt dat, zoals het antwoord van mc0e aangeeft, het daadwerkelijk extraheren van regex-overeenkomsten niet out-of-the-box wordt ondersteund in MySQL. Als je dit echt nodig hebt, dan zijn je keuzes in principe om 1) het in nabewerking op de client te doen, of 2) een MySQL-extensie te installeren om dit te ondersteunen.

BenWells heeft het bijna juist. Werkend vanuit zijn code, hier is een licht aangepaste versie:

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

Als werkend voorbeeld gebruikte ik:

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

Dit extraheert met succes het woord IS



  1. Aanbevelingen voor ondersteuning van zowel Oracle als SQL Server in dezelfde ASP.NET-app met NHibernate

  2. Hoe een tabelnaam in SQL Server te hernoemen

  3. De beste manier om een ​​Oracle-reeks te resetten naar de volgende waarde in een bestaande kolom?

  4. Postgres stopte gewoon willekeurig met werken (Rails, PGSQL.5432)