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

SUM (TO_NUMBER (varchar2 फ़ील्ड)) नहीं कर सकता:ORA 01722 [ORACLE]

अगर आपको वह त्रुटि 13.5 . जैसी स्ट्रिंग से मिल रही है फिर आपके सत्र का NLS_NUMERIC_CHARACTERS ऐसा लगता है कि दशमलव विभाजक के रूप में अल्पविराम का उपयोग करने के लिए सेट किया गया है:

alter session set nls_numeric_characters=',.';

with your_table (bikou) as (
  select '10' from dual
  union all select '12' from dual
  union all select '13.5' from dual
  union all select null from dual
)
select SUM(TO_NUMBER(REGEXP_REPLACE(BIKOU,'[[:alpha:]]', '')))
from your_table;

SQL Error: ORA-01722: invalid number

आप या तो सत्र को दशमलव विभाजक के रूप में अवधि का उपयोग करने के लिए स्पष्ट रूप से सेट कर सकते हैं, या एक प्रारूप मास्क प्रदान कर सकते हैं जो एक अवधि का उपयोग करता है:

select SUM(TO_NUMBER(REGEXP_REPLACE(BIKOU,'[[:alpha:]]', ''), '99999999.99999'))
from your_table;

SUM(TO_NUMBER(REGEXP_REPLACE(BIKOU,'[[:
---------------------------------------
                                   35,5

या मॉडल में दशमलव विभाजक मार्कर का उपयोग करें और सत्र की NLS सेटिंग को ओवरराइड करें:

select SUM(TO_NUMBER(REGEXP_REPLACE(BIKOU,'[[:alpha:]]', ''),
  '99999999D99999', 'nls_numeric_characters=''.,'''))
from your_table;

SUM(TO_NUMBER(REGEXP_REPLACE(BIKOU,'[[:
---------------------------------------
                                   35,5

मुखौटा स्पष्ट रूप से उन सभी मूल्यों के लिए उपयुक्त होना चाहिए जो आप अपने रेगेक्स से वापस उम्मीद करते हैं; हो सकता है कि मैंने जो उपयोग किया है वह आपके डेटा के लिए बिल्कुल सही न हो।

इस तरह का मुद्दा यह है कि आपको संख्याओं या तिथियों को तार के रूप में क्यों नहीं स्टोर करना चाहिए। अपने कॉलम के लिए सही डेटा प्रकार का उपयोग करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL डेवलपर में संग्रहीत प्रक्रिया चलाएँ?

  2. OraOLEDB का उपयोग करने के लिए मुझे क्या स्थापित करने की आवश्यकता है?

  3. आप किसी प्रश्न की व्याख्या योजना की व्याख्या कैसे करते हैं?

  4. CLOB बाइंडिंग के साथ JDBC के माध्यम से sql स्टेटमेंट निष्पादित करें

  5. मुझे कोलेशन समझ में नहीं आ रहा है? (मैसकल, आरडीबीएमएस, कैरेक्टर सेट)