@Marc B करीब था। MySQL में, निम्न कथन 12 लौटाता है:
SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
मान के संभावित उपयोग का अनुमान लगाते हुए, निम्न कथन अंतिम अंडरस्कोर (यानी, _) से पहले स्ट्रिंग के बाएं हिस्से को निकालता है:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
परिणाम "first_middle" है। यदि आप सीमांकक शामिल करना चाहते हैं, तो इसका उपयोग करें:
SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
यह अच्छा होगा यदि उन्होंने खोज को दाईं ओर से शुरू करने का विकल्प रखने के लिए LOCATE को बढ़ाया है।
यदि आप अंतिम स्थान के बाद स्ट्रिंग का दाहिना भाग चाहते हैं तो एक बेहतर समाधान है:
SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
यह "अंतिम" लौटाता है।