Oracle Sql Error Ora-01722 Invalid Number
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 6.2 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up sql error “ORA-01722: invalid number” up vote 42 down vote favorite 1 A very easy one for someone, The following insert is giving me the "ORA-01722: invalid number" error, why? INSERT INTO CUSTOMER VALUES (1,'MALADY','Claire','27 Smith St Caulfield','0419 853 694'); INSERT INTO CUSTOMER VALUES (2,'GIBSON','Jake','27 Smith St Caulfield','0415 713 598'); INSERT INTO CUSTOMER VALUES (3,'LUU','Barry','5 Jones St Malvern','0413 591 341'); INSERT INTO CUSTOMER VALUES (4,'JONES','Michael','7 Smith St Caulfield','0419 853 694'); INSERT INTO CUSTOMER VALUES (5,'MALADY','Betty','27 Smith St Knox','0418 418 347'); sql oracle plsql share|improve this question edited Sep 23 '12 at 6:44 a_horse_with_no_name 187k24235312 asked Sep 23 '12 at 1:24 Phillip Gibson 244133 19 So... what's the table definition for CUSTOMER? You've only given half the information needed. –Greg Hewgill Sep 23 '12 at 1:26 2 The telephone numbers are the only thing which might reasonably be a defined as a numeric which your data doesn't represent as a numeric (spaces aren't numeric). So: check your table definition and compare with your input statements. –APC Sep 23 '12 at 22:05 5 Why would people down vote this question. For people who are new to databases, this is a weird error.
MySQL MariaDB PostgreSQL SQLite MS Office Excel Access Word Web Development HTML CSS Color Picker Languages C Language More ASCII Table Linux UNIX Java Clipart Techie Humor Advertisement Oracle Basics ALIASES AND AND & OR BETWEEN COMPARISON OPERATORS DELETE DISTINCT EXISTS FROM GROUP BY HAVING IN INSERT INSERT ALL INTERSECT IS NOT NULL IS NULL JOIN LIKE MINUS NOT OR ORDER BY PIVOT REGEXP_LIKE SELECT SUBQUERY TRUNCATE http://stackoverflow.com/questions/12549029/sql-error-ora-01722-invalid-number UNION UNION ALL UPDATE WHERE Oracle Advanced Oracle Cursors Oracle Exception Handling Oracle Foreign Keys Oracle Loops/Conditionals Oracle Transactions Oracle Triggers String/Char Functions Numeric/Math Functions Date/Time Functions Conversion Functions Analytic Functions Advanced Functions Oracle / PLSQL: ORA-01722 Error Message Learn the cause and how to resolve the ORA-01722 error message in https://www.techonthenet.com/oracle/errors/ora01722.php Oracle. Description When you encounter an ORA-01722 error, the following error message will appear: ORA-01722: invalid number Cause You executed a SQL statement that tried to convert a string to a number, but it was unsuccessful. Resolution The option(s) to resolve this Oracle error are: Option #1 Only numeric fields or character fields that contain numeric values can be used in arithmetic operations. Make sure that all expressions evaluate to numbers. Option #2 If you are adding or subtracting from dates, make sure that you added/substracted a numeric value from the date. Share this page: Advertisement Back to top Home | About Us | Contact Us | Testimonials | Donate While using this site, you agree to have read and accepted our Terms of Service and Privacy Policy. We use advertisements to support this website and fund the development of new content. Copyright © 2003-2016 TechOnTheNet.com. All rights reserved.
UPDATE 3.3 Other Rare Situations What causes this error?[edit] An ORA-01722 ("invalid number") error occurs when an attempt is made to convert a character string into a http://www.orafaq.com/wiki/ORA-01722 number, and the string cannot be converted into a valid number. Valid numbers contain https://asktom.oracle.com/pls/apex/f%3Fp%3D100:11:::NO:RP:P11_QUESTION_ID:7469859800346898895 the digits '0' through '9', with possibly one decimal point, a sign (+ or -) at the beginning or end of the string, or an 'E' or 'e' (if it is a floating point number in scientific notation). All other characters are forbidden. There are numerous situations where this conversion may occur. A numeric column oracle sql may be the object of an INSERT or an UPDATE statement. Or, a numeric column may appear as part of a WHERE clause. It is even possible for this error to appear when there are no numeric columns appearing explicitly in the statement! Examples[edit] Here are some examples: SQL> select to_number('3434,3333.000') from dual; ERROR: ORA-01722: invalid number no rows selected The above statement throws the error message, because it has oracle sql error found a character, in this case, a comma and the default format for TO_NUMBER does not contain a comma. The same error can occur when you use arithmetic functions on strings: SQL> select 'abc' - 124 from dual; ERROR: ORA-01722: invalid number no rows selected The error can occur when you add dates with string values: SQL> select '01-JUN-01' - 'abc' from dual; ERROR: ORA-01722: invalid number no rows selected How to fix it[edit] The fix depends upon the exact expression which caused the problem. The following guide lists the possible SQL expressions which can give this error, with their most likely cause. When addressing this error, keep in mind that it can indicate a simple keystroke problem with the query, or a deeper problem with the query logic, or even the presence of bad data in the database itself. When doing an INSERT INTO ... VALUES (...)[edit] One of the data items you are trying to insert is an invalid number. Locate and correct it. If all of the numbers appear to be valid, then you probably have your columns out of order, and an item in the VALUES clause is being inserted into a NUMBER column instead of the expected VARCHAR2 column. This can
09, 2013 - 6:30 pm UTC Category: Database � Version: 10.2.0.4.0 Whilst you are here, check out some content from the AskTom team: dbms_output and the scheduler Latest Followup You Asked Hi, We have an issue in production where one of the developer has released a Java code without checking the data type of the column of the table. He is equating a string literal to a column which stores as number. So naturally it is giving an invalid number error. This is an easier fix but it is easier said than done. Since there are lot of places in the application, and also depending upon predicate clause of the SQL, the database may or may not return this error. ( And the developer is blaming Oracle for that saying that why can't Oracle check the column data type before equating it to the literal value). Here's the tricky part of the question : Is there a way to change the predicate clause of the SQL by any means? I tried the FGAC to do this but unfortunately FGAC is not able to handle the literal values passed in the predicate clause equating to the column value. Here are my scripts and some FGAC solution I tried : CREATE TABLE TEST_CONFIG ( EQ_ORG_ID NUMBER(10) NOT NULL, EQ_LEGAL_ENTITY_ID NUMBER(10), EQ_FUNCTION_CD VARCHAR2(16 BYTE), TRANSFORMATION_SET_NAME VARCHAR2(32 BYTE), PASS_THROUGH CHAR(1 BYTE) NOT NULL, XSLT_FILE_NAME VARCHAR2(64 BYTE), COMMUNICATION_TYPE_CD CHAR(2 BYTE), SOURCE_CD CHAR(1 BYTE) NOT NULL, USER_ID VARCHAR2(10 BYTE), PASSWORD VARCHAR2(10 BYTE), FUNCTION_VALUE NUMBER(10), PREPROCESSING_INSTRUCTIONS VARCHAR2(1000 BYTE), PREPROCESSING_CLASS VARCHAR2(1000 BYTE) ) ; SET DEFINE OFF; Insert into TEST_CONFIG (EQ_ORG_ID, EQ_LEGAL_ENTITY_ID, EQ_FUNCTION_CD, TRANSFORMATION_SET_NAME, PASS_THROUGH, XSLT_FILE_NAME, COMMUNICATION_TYPE_CD, SOURCE_CD, FUNCTION_VALUE) Values (232, 776, 'AVPO-PO', '232DB_LE776_ECOM_AVPO', 'N', 'AvailabilityCToE.xsl', 'MQ', 'C', 500); Insert into TEST_CONFIG (EQ_ORG_ID, EQ_LEGAL_ENTITY_ID, EQ_FUNCTION_CD, TRANSFORMATION_SET_NAME, PASS_THROUGH, XSLT_FILE_NAME, COMMUNICATION_TYPE_CD, SOURCE_CD) Values (232, 776, 'AVPO-PO', 'ABX_AVPO', 'N', 'AvailabilityCToE.xsl', 'MQ', 'C'); Insert into TEST_CONFIG (EQ_ORG_ID, EQ_LEGAL_ENTITY_ID, EQ_FUNCTION_CD, TRANSFORMATION_SET_NAME, PASS_THROUGH, XSLT_FILE_NAME, COMMUNICATION_TYPE_CD, SOURCE_CD) Values (18, 1818, 'AVPO-IN', 'IN_AVPO', 'N', 'AB_INMSG.xsl', 'MQ', 'M'); COMMIT; If I use the following SQL statement, it produces an error of INVALID NUMBER" as follows : select * from test_config where eq_org_id = 232 and (eq_legal_entity_id = 776 OR eq_legal_entity_id IS NULL) and eq_function_cd = 'AVPO-PO' and ( function_value = 'L' OR functi