Reglas de conversión de tipo de Oracle:
- Para las operaciones de inserción y actualización, Oracle convierte el valor al tipo de columna afectada.
- Para las operaciones seleccionadas, Oracle convertirá el tipo del valor de la columna al tipo de la variable de destino.
Mira el siguiente experimento:
1. Cree una tabla, el tipo de identificación de campo es número, cree un índice para el campo de identificación e inserte una pieza de datos de prueba
create table test(id number);
create index idx_test_id on test(id);
insert into test values(1);
2. Hacemos la siguiente consulta y el valor de id se establece en el tipo de carácter '1'
3. Ver el plan de ejecución:
¿Es sorprendente que Oracle no haya realizado la conversión de tipos? Se utiliza un escaneo de índice y '1' se considera un 1 numérico.
De hecho, cualquier tipo numérico se puede convertir en un tipo de carácter. Por lo tanto, agregar la función to_char a un campo numérico es redundante.
El extranjero resumió una imagen, explicando qué tipos se pueden convertir directamente y cuáles deben convertirse agregando una función a la columna, lo cual es muy bueno:
-------------------------------------------------- -------------------------------------------------- -------------------------
Agregar un nombre de campo nvarchar2 (10)
alter table TEST add NAME VARCHAR2(10);
Insertar datos de prueba
insert into test values(1,'1');
Preguntar
explain plan for select * from test where name='1';
select * from table(dbms_xplan.display);
Preguntar
explain plan for select * from test where name=1;
select * from table(dbms_xplan.display);