SQL> select o.no from Org_Table o where o.no=0080000;
NO
---
00080000
SQL> select o.no from Org_Table o where o.no='0080000';
NO
---
SQL> select o.no from Org_Table o where o.no='00080000';
NO
---
00080000
Run Code Online (Sandbox Code Playgroud)
为什么第一个结果与第二个结果不同?
使用过滤器谓词检查查询的执行计划.这就是我所看到的(假设no字段是varchar2):
Execution Plan
----------------------------------------------------------
Plan hash value: 2153619298
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2002 | 2 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| T | 1 | 2002 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(TO_NUMBER("NO")=0080000)
Run Code Online (Sandbox Code Playgroud)
注意1 - filter(TO_NUMBER("NO")=0080000)- 隐式类型转换.您的数据将作为数字进行比较,在这种情况下,0080000等于80000.但是,在第二种情况下,它将比较为strings(1 - filter("NO"='0080000')),在这种情况下,它们是不同的.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |