Mysql
 sql >> Database >  >> RDS >> Mysql

Ultimo indice di una determinata sottostringa in MySQL

@Marc B era vicino. In MySQL, la seguente istruzione restituisce 12:

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

Anticipando un possibile utilizzo del valore, la seguente istruzione estrae la parte sinistra della stringa prima dell'ultimo underscore (es. _):

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

Il risultato è "first_middle". Se vuoi includere il delimitatore, usa:

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

Sarebbe bello se migliorassero LOCATE per avere un'opzione per iniziare la ricerca da destra.

Se vuoi la parte destra della stringa dopo l'ultimo spazio, una soluzione migliore è:

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

Questo restituisce "ultimo".