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

गैर-डिफ़ॉल्ट NLS_NUMERIC_CHARACTERS के साथ Oracle PL/SQL में टेक्स्ट को संख्या में कुशलतापूर्वक कैसे बदलें?

निम्नलिखित कार्य करना चाहिए:

SELECT to_number(:x, 
                 translate(:x, '012345678-+', '999999999SS'), 
                 'nls_numeric_characters=''.,''') 
  FROM dual;

यह सही दूसरे तर्क का निर्माण करेगा 999.999999 कुशल translate . के साथ इसलिए आपको यह जानने की जरूरत नहीं है कि पहले से कितने अंक हैं। यह सभी समर्थित Oracle संख्या प्रारूप के साथ काम करेगा (स्पष्ट रूप से 10.2.0.3 में 62 महत्वपूर्ण अंक तक)।

दिलचस्प है, यदि आपके पास वास्तव में एक बड़ी स्ट्रिंग है तो सरल to_number(:x) काम करेगा जबकि यह तरीका विफल हो जाएगा।

संपादित करें:नकारात्मक संख्याओं के लिए समर्थन सॉलिवर को धन्यवाद।



  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 में RR बनाम YY

  2. Pl/sql द्वारा ईमेल कैसे भेजें

  3. Oracle 11g में ऑब्जेक्ट टाइप कॉलम से कैसे चुनें?

  4. Oracle ISNULL () समतुल्य

  5. ORA-01219:डेटाबेस नहीं खुला:केवल निश्चित तालिकाओं/दृश्यों पर प्रश्नों की अनुमति है