सीधा रास्ता? नहीं, लेकिन मैंने इसका उल्टा इस्तेमाल किया है। सचमुच।
पूर्व रूटीन में, किसी दिए गए स्ट्रिंग के अंतिम अवसर को खोजने के लिए, मैंने REVERSE() फ़ंक्शन का उपयोग किया, इसके बाद CHARINDEX, उसके बाद मूल ऑर्डर को पुनर्स्थापित करने के लिए फिर से REVERSE का उपयोग किया। उदाहरण के लिए:
SELECT
mf.name
,mf.physical_name
,reverse(left(reverse(physical_name), charindex('\', reverse(physical_name)) -1))
from sys.master_files mf
दिखाता है कि वास्तविक डेटाबेस फ़ाइल नामों को उनके "भौतिक नामों" से कैसे निकाला जाए, इससे कोई फर्क नहीं पड़ता कि सबफ़ोल्डर में कितनी गहराई से घोंसला है। यह केवल एक वर्ण (बैकस्लैश) की खोज करता है, लेकिन आप इस पर लंबी खोज स्ट्रिंग के लिए निर्माण कर सकते हैं।
केवल नकारात्मक पक्ष यह है कि, मुझे नहीं पता कि यह टेक्स्ट डेटा प्रकारों पर कितनी अच्छी तरह काम करेगा। मैं अब कुछ वर्षों से SQL 2005 पर हूँ, और अब मैं TEXT के साथ काम करने से परिचित नहीं हूँ - लेकिन मुझे याद है कि आप इस पर LEFT और RIGHT का उपयोग कर सकते हैं?
फिलिप