隱式轉換錯誤:ORA-01722: invalid number
oracle資料庫有to_number和to_char的隱式轉換。
實驗如下:
SYS@192.168.80.100:1521/orcl > select * from test;
ID NAME
---------- --------------------
1 haohao
1 1
SYS@192.168.80.100:1521/orcl > desc test
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(2)
NAME VARCHAR2(20)
開啟執行計劃,並執行一個有where條件的select語句如下:
SYS@192.168.80.100:1521/orcl > set autot trace exp
SYS@192.168.80.100:1521/orcl > select * from test where name=1;
Execution Plan
----------------------------------------------------------
Plan hash value: 1357081020
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 25 | 2 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| TEST | 1 | 25 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_NUMBER("NAME")=1)
從上面的執行計劃可以看出Oracle資料庫對name列進行了to_number的隱式轉換,但是這條select語句會報錯如下:
SYS@192.168.80.100:1521/orcl > select * from test where name=1;
select * from test where name=1
*
ERROR at line 1:
ORA-01722: invalid number
但是給條件的值加上單引號就不會報錯
SYS@192.168.80.100:1521/orcl > select * from test where name='1';
ID NAME
---------- --------------------
1 1
原因:因為test的name列中有有數字也有字元,oracle處理where name=1的時候是對name進行to_number的隱式轉換,但是name列有個值是“haohao”,由此而報錯
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29117696/viewspace-1084239/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlldr 時碰到錯誤 ORA-01722: invalid numberSQL
- oracle ORA-01722 報錯 "invalid number"Oracle
- SQLLoader ORA-01722 invalid numberSQL
- 【問題處理】ORA-01722: invalid number
- 評“MySQL 隱式轉換引起的執行結果錯誤”MySql
- js顯式轉換和隱式轉換JS
- javascript 隱式轉換JavaScript
- sql隱式轉換SQL
- Oracle 隱式轉換Oracle
- java隱式轉換Java
- Scala - 隱式轉換和隱式引數
- Scala隱式轉換與隱式引數
- 【隱式轉換】注意隱式轉換將導致索引無法使用索引
- Scala Essentials: 隱式轉換
- ORA-01722:invalid number-解決GAT專案中車輛維修Bug(續)
- JavaScript隱式型別轉換JavaScript型別
- mysql隱式轉換問題MySql
- MySQL 隱式型別轉換MySql型別
- 【C++】禁止隱式轉換C++
- scala中隱式轉換之隱式轉換呼叫類中本不存在的方法
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- [] == ![],走進==隱式轉換的世界
- MySQL索引失效之隱式轉換MySql索引
- JS隱式轉換--寬鬆相等(==)JS
- 筆記:隱式轉換規則筆記
- C# 隱式型別轉換(轉載)C#型別
- ERROR 1292 (22007): Truncated incorrect DOUBLE value 和ORA-01722: invalid numberError
- MyBatis 錯誤:Invalid bound statement (not found)MyBatis
- std::sort 錯誤"Expression : invalid operator <"Express
- oracle資料隱式轉換規則Oracle
- JavaScript 隱式資料型別轉換JavaScript資料型別
- Spark中的三種隱式轉換Spark
- 如何實現隱式型別轉換型別
- 你所忽略的js隱式轉換JS
- MySQL和Oracle中的隱式轉換MySqlOracle
- 談談 MySQL 隱式型別轉換MySql型別
- C++隱式類型別轉換C++型別
- C++隱式型別的轉換C++型別