select
SUBSTR(s, 1, INSTR(s, '-') - 1) as a,
SUBSTR(s, INSTR(s, '-', -1) + 1) as b
from
(select '[email protected]@BR12340000-990' as s from dual)
SUBSTR(string, start, length)
. का उपयोग करना हमारे पास निम्नलिखित तर्क हैं:
ए के लिए:
- खोज करने के लिए स्ट्रिंग
- 1 के रूप में
start
और - (index_of_the_first_hyphen -1)
length
के रूप में .INSTR(string, searchfor)
हमें पहले हाइफ़न की अनुक्रमणिका देता है
बी के लिए:
SUBSTR(string, start)
. का उपयोग करना हमारे पास तर्क हैं:
- खोज करने के लिए स्ट्रिंग
- the (index_of_last_hyphen + 1) - इस बार हम अतिरिक्त
INSTR(string, searchfor, startindex)
का उपयोग करते हैं तर्कstartindex
और इसे -1 पर सेट करें; यह इसे स्ट्रिंग के अंत से खोजता है और पीछे की ओर काम करता है, हमें अंतिम हाइफ़न की अनुक्रमणिका देता है
हमें लंबाई तर्क की आवश्यकता नहीं है - लंबाई के बिना SUBSTR शेष स्ट्रिंग को अंत तक लौटाता है
यह ध्यान रखना महत्वपूर्ण है कि INSTR -1 के प्रारंभ सूचकांक के साथ पीछे की ओर खोज करता है लेकिन यह हमेशा अनुक्रमणिका को स्ट्रिंग की शुरुआत से लौटाता है, अंत से नहीं।
INSTR('dddde', 'd', -1)
12345 -- returns 4, because d is 4 from the start
54321 -- it does not return 2, even though d is 2 from the "start" when searching backwards