欄位的資料型別隱式轉換有關係
欄位的資料型別隱式轉換有關係
SQL> create table t1(
2 id number,
3 key_name varchar2(10));
表已建立。
SQL> insert into t1 values(1, '111');
已建立 1 行。
SQL> insert into t1 values(2, 'sdaf11');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t1;
ID KEY_NAME
---------- ----------
1 111
2 sdaf11
測試SQL1:
SQL> select * from t1 where key_name=111;
ERROR:
ORA-01722: 無效數字
測試SQL2:
SQL> select * from t1 where id=1 and key_name=111;
ERROR:
ORA-01722: 無效數字
未選定行
測試SQL3:
SQL> select * from t1 where key_name=111 and id=1;
ID KEY_NAME
---------- ----------
1 111
我這裡用的資料庫版本是9207,優化器是RBO,所以查詢語句用的條件是從下往上的順序的解析,這也說明測試SQL2和測試SQL3執行結果的差異。
你測試的幾個sql也說明這個問題。即使後來你加了索引,貌似解決了該問題,實際上是由於條件篩選使用了索引,同時選擇出來的結果可以進行隱式的資料轉 換,所以才有結果。假如SECTION_ID = 180119對應的key_name='222dddf',此時還是會報錯。
SQL> create table t1(
2 id number,
3 key_name varchar2(10));
表已建立。
SQL> insert into t1 values(1, '111');
已建立 1 行。
SQL> insert into t1 values(2, 'sdaf11');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t1;
ID KEY_NAME
---------- ----------
1 111
2 sdaf11
測試SQL1:
SQL> select * from t1 where key_name=111;
ERROR:
ORA-01722: 無效數字
測試SQL2:
SQL> select * from t1 where id=1 and key_name=111;
ERROR:
ORA-01722: 無效數字
未選定行
測試SQL3:
SQL> select * from t1 where key_name=111 and id=1;
ID KEY_NAME
---------- ----------
1 111
我這裡用的資料庫版本是9207,優化器是RBO,所以查詢語句用的條件是從下往上的順序的解析,這也說明測試SQL2和測試SQL3執行結果的差異。
你測試的幾個sql也說明這個問題。即使後來你加了索引,貌似解決了該問題,實際上是由於條件篩選使用了索引,同時選擇出來的結果可以進行隱式的資料轉 換,所以才有結果。假如SECTION_ID = 180119對應的key_name='222dddf',此時還是會報錯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10742223/viewspace-206123/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料型別的隱式轉換資料型別
- JavaScript 隱式資料型別轉換JavaScript資料型別
- Java資料型別與資料庫欄位型別對應關係Java資料型別資料庫
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- 資料型別隱式轉換導致的阻塞資料型別
- ORACLE中的隱式資料型別轉換(一)Oracle資料型別
- 關於隱式資料型別轉換的一些試驗資料型別
- 【關於Javascript】--- 隱式型別轉換篇JavaScript型別
- oracle資料型別隱式轉換----- 應急方案Oracle資料型別
- JavaScript隱式型別轉換JavaScript型別
- MySQL 隱式型別轉換MySql型別
- javascript資料型別隱式和顯式轉換詳解JavaScript資料型別
- 主流資料庫欄位型別轉.Net型別的方法資料庫型別
- javascript 隱式資料型別轉換程式碼例項JavaScript資料型別
- C++隱式型別的轉換C++型別
- 有趣的JavaScript隱式型別轉換JavaScript型別
- SQL Server資料庫中的資料型別隱式轉換問題SQLServer資料庫資料型別
- 【轉】修改表的欄位資料型別的方法資料型別
- C語言的隱式型別轉換C語言型別
- JavaScript的隱式型別轉換淺析JavaScript型別
- 資料欄位型別匹配型別
- 轉載:Oracle常用的資料庫欄位型別Oracle資料庫型別
- C# 隱式型別轉換(轉載)C#型別
- [轉]ABAP資料型別與Java資料型別的對應關係資料型別Java
- 如何實現隱式型別轉換型別
- 談談 MySQL 隱式型別轉換MySql型別
- C++隱式類型別轉換C++型別
- C++ 隱式類型別轉換C++型別
- 索引失效系列——隱式型別轉換索引型別
- JavaScript隱式型別轉換趣解JavaScript型別
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- 修改欄位資料型別的方法資料型別
- c++隱式型別轉換存在的陷阱C++型別
- 「譯」JavaScript 的怪癖 1:隱式型別轉換JavaScript型別
- 關係型資料庫和非關係型資料庫的區別資料庫
- 建構函式定義的隱式型別轉換函式型別
- 資料型別,型別轉換資料型別
- 關於直方圖中關於字元型別的ENDPOINT_VALUE欄位的轉換直方圖字元型別