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

Sidste indeks for en given understreng i MySQL

@Marc B var tæt på. I MySQL returnerer følgende sætning 12:

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

For at forudse en mulig brug af værdien udtrækker følgende sætning den venstre del af strengen før den sidste understregning (dvs. _):

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

Resultatet er "first_middle". Hvis du vil inkludere afgrænsningen, skal du bruge:

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

Det ville være rart, hvis de forbedrede LOCATE for at have mulighed for at starte søgningen fra højre.

Hvis du vil have den rigtige del af strengen efter det sidste mellemrum, er en bedre løsning:

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

Dette returnerer "sidste".



  1. Forskellen mellem CTE og SubQuery?

  2. Java Forberedt sætning udføres ikke

  3. Gem CSV-filer i mysql-databasen

  4. PostgreSQL:Opret indeks for boolesk kolonne