sql >> Database >  >> RDS >> Mysql

Laatste index van een bepaalde substring in MySQL

@Marc B was dichtbij. In MySQL retourneert de volgende instructie 12:

SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;

Anticiperend op een mogelijk gebruik van de waarde, extraheert de volgende instructie het linkerdeel van de tekenreeks vóór het laatste onderstrepingsteken (d.w.z. _):

SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));

Het resultaat is "first_middle". Als u het scheidingsteken wilt opnemen, gebruikt u:

SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);

Het zou leuk zijn als ze LOCATE zouden verbeteren met een optie om de zoekopdracht vanaf de rechterkant te starten.

Als je het rechterdeel van de string na de laatste spatie wilt, is een betere oplossing:

SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);

Dit retourneert "laatste".



  1. MySql-tabel invoegen indien niet aanwezig, anders bijwerken

  2. Een nummer "unhexen" in MySQL

  3. MySQL-groep op ID en laatste datum/tijd

  4. php, mysql - Te veel verbindingen met databasefout