Conversión implícita de tipos de datos de Oracle

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);

 

Supongo que te gusta

Origin blog.csdn.net/lw112190/article/details/108774781
Recomendado
Clasificación