oracle数据类型问题

时间:2021-06-29 20:19:27
前提:表t1某字段a是number型,比如里面存放0和1
现场: 
 select * from   t1 where t1.a=0

 select * from   t1 where t1.a='0'


问题:为什么结果是一样的。如果数据量大效率是否一样。

2 个解决方案

#1


oralce有自动的类型转换功能,比如t1.a='0',因为a列为number类型,所以这时候oracle会判断字符串‘0’是否能转换为number类型,如果可以,则自动转换,且如果存在索引,不影响索引的使用。

一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0

#2


引用 1 楼 xu176032 的回复:
oralce有自动的类型转换功能,比如t1.a='0',因为a列为number类型,所以这时候oracle会判断字符串‘0’是否能转换为number类型,如果可以,则自动转换,且如果存在索引,不影响索引的使用。

一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0
oracle数据类型问题

#1


oralce有自动的类型转换功能,比如t1.a='0',因为a列为number类型,所以这时候oracle会判断字符串‘0’是否能转换为number类型,如果可以,则自动转换,且如果存在索引,不影响索引的使用。

一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0

#2


引用 1 楼 xu176032 的回复:
oralce有自动的类型转换功能,比如t1.a='0',因为a列为number类型,所以这时候oracle会判断字符串‘0’是否能转换为number类型,如果可以,则自动转换,且如果存在索引,不影响索引的使用。

一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0
oracle数据类型问题