RTSELECT to_number(TA.abc) FROM TA
这样的一个查询语句。我的理解 :将表TA的abc字段转为number型实际plsql操作 :
在 TA.abc中 ,有汉字也有数字,按我的理解,plsql应该会报错。。因为有汉字存在。。
但实际却并没有报错,而是正常的执行,并查询出来了。。查询出的结果中没有汉字。全部都是数字。。但是,更让我疑惑的事情是 -- plsql有一个展开所有查询结果的按钮。当我展开时才报错。我硬生生的理解是plsql查询时查出的几条信息都是number型的所以不报错,但是展开所有查询结果时,就会发生异常。-_-b可是在db中,汉字和number型的数据是无规则混合的疑问 :是不是当plsql执行时先执行对的,再执行错的呢??
这样的一个查询语句。我的理解 :将表TA的abc字段转为number型实际plsql操作 :
在 TA.abc中 ,有汉字也有数字,按我的理解,plsql应该会报错。。因为有汉字存在。。
但实际却并没有报错,而是正常的执行,并查询出来了。。查询出的结果中没有汉字。全部都是数字。。但是,更让我疑惑的事情是 -- plsql有一个展开所有查询结果的按钮。当我展开时才报错。我硬生生的理解是plsql查询时查出的几条信息都是number型的所以不报错,但是展开所有查询结果时,就会发生异常。-_-b可是在db中,汉字和number型的数据是无规则混合的疑问 :是不是当plsql执行时先执行对的,再执行错的呢??
--------------中要有非数据,你进行to_number的时候都会报错,
可实际却查询出来了30多条信息,这30多条信息都是num型的。。当我点展开所有查询时,才报的错误。。
而且执行 select * from TA 的时候,前30条有很多非num型的难道plsql是先将对的查出来??然后再差不对的??!!
select col1 from tb1--select to_number(col1,'999999') from tb1col1
-----
1423
3077
6345
2453
2457
3333
3581
3377
4444
2222
6234
6666
1020
0175
0451
0614
3333
1011
1019
1023
2223
8888
al02
9977
SELECT * FROM TA WHERE to_number(TA.abc)>0
但7L的例子不是这样啊。【显示5条 按正常查询 带字母的应该在20多行】--按这里论应该能正常执行,但是他报错。
我实际的例子也不是这样。第一行就是汉字。。--按理论应该直接就报错,但是没报
这个应该不行吧 where会判断每一行 然后都会转换成number比较0 还是会有不能转换的 应该还会报错 “无效数字”
如果这样,那么7L的例子【 显示5条 按正常查询 带字母的应该在20多行】就不会报错,但他报了。。、
我看了下我的例子,第一行的数据就是汉字,但没报错
你可以加上ORDER BY排序和ROWNUM限制记录数测试。
1、对于非分区表、无索引、无并行的情况下oracle默认是按照extent_id和rowid来联合排序,即order by extent_id,rowid
2、对于分区表、无索引、无并行的情况下oracle默认是按照partition_position、extent_id和rowid来联合排序,即order by partition_position,extent_id,rowid