इसलिए, मैं स्ट्रिंग को सबसे दूर के सीमांकक द्वारा अलग करना चाहूंगा।
मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन यह एक साधारण आवश्यकता है जिसके लिए SUBSTR और INSTR पर्याप्त होगा। REGEXP अभी भी धीमे हैं और CPU गहन पुराने subtsr और instr कार्यों की तुलना में संचालन।
SQL> WITH DATA AS
2 ( SELECT 'F/P/O' str FROM dual
3 )
4 SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
5 SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
6 FROM DATA
7 /
PART1 PART2
----- -----
F/P O
जैसा कि आपने कहा था कि आप सबसे दूर . चाहते हैं सीमांकक, इसका अर्थ होगा रिवर्स . से पहला सीमांकक ।
आपका दृष्टिकोण ठीक था, लेकिन आप start_position . को याद कर रहे थे INSTR . में . अगर start_position नकारात्मक है , INSTR
फ़ंक्शन स्ट्रिंग के अंत से वर्णों की start_position संख्या वापस गिनता है और फिर स्ट्रिंग की शुरुआत की ओर खोज करता है।