sql >> Databáze >  >> RDS >> Mysql

Poslední index daného podřetězce v MySQL

@Marc B byl blízko. V MySQL vrací následující příkaz 12:

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

Následující příkaz předvídá možné použití hodnoty a extrahuje levou část řetězce před posledním podtržítkem (tj. _):

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

Výsledkem je "first_middle". Pokud chcete zahrnout oddělovač, použijte:

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

Bylo by hezké, kdyby vylepšili LOCATE tak, aby měli možnost zahájit vyhledávání zprava.

Pokud chcete pravou část řetězce za poslední mezerou, je lepší řešení:

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

To vrátí "poslední".



  1. Je použití znaku jako primárního/cizího klíče ne ne?

  2. Oracle Joins - Srovnání mezi konvenční syntaxí VS ANSI syntaxí

  3. Export tabulky MySQL do souboru CSV

  4. Funkce CHR() v Oracle