Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ऑरैकल एसक्यूएल का उपयोग करके डिलीमीटर स्थिति से विभाजित स्ट्रिंग

<ब्लॉकक्वॉट>

इसलिए, मैं स्ट्रिंग को सबसे दूर के सीमांकक द्वारा अलग करना चाहूंगा।

मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन यह एक साधारण आवश्यकता है जिसके लिए 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 संख्या वापस गिनता है और फिर स्ट्रिंग की शुरुआत की ओर खोज करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle दिनांक DST की वजह से टूटी हुई तुलना

  2. Oracle क्लाइंट को 64-बिट मशीन पर 32-बिट मोड में चलाएं

  3. Oracle में ऑडिटिंग

  4. REGEXP_REPLACE और PL/SQL के बिना UUID स्ट्रिंग बनाना

  5. हाइबरनेट के साथ Oracle दिनांक का उपयोग करते समय दिनांक/समय के लिए जावा प्रकार