@Marc B sudah dekat. Di MySQL, pernyataan berikut mengembalikan 12:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
Mengantisipasi kemungkinan penggunaan nilai, pernyataan berikut mengekstrak bagian kiri string sebelum garis bawah terakhir (yaitu, _):
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
Hasilnya adalah "first_middle". Jika Anda ingin menyertakan pembatas, gunakan:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
Akan lebih baik jika mereka meningkatkan LOCATE untuk memiliki opsi untuk memulai pencarian dari kanan.
Jika Anda menginginkan bagian kanan string setelah spasi terakhir, solusi yang lebih baik adalah:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
Ini mengembalikan "terakhir".