sql的where条件中,等式两边类型不一致时,数据库会做一次隐式类型转换。
如果是数字类型(诸如number,double,integer等)的话,会默认的把带引号的转成数字再进行查询,也就是说带引号和不带引号是一样的。
select * from t where to_number(char_col) = num_val
oracle会从“大”类型转换到“小”类型。
oracle会在char类型的值或字段上进行to_number或to_date转换。而不会在number或date上做to_char操作。
同样,如果是字符类型,这一列都是数字,那么你不带引号的数字也会被oracle默认转成字符类型。但如果这一列不全是数字,那么必须带引号。
oracle中where条件中类型的隐式转换
最新推荐文章于 2024-04-13 22:05:57 发布