Oracle - No entiendo

 
Vista:

No entiendo

Publicado por Mery (46 intervenciones) el 21/12/2005 20:03:42
Hola Foro no entiendo pq si hago un update a un campo de un registro y lo seteo como '' asi : update table set campo 1='' where clave =1 , luego cuando le hago un select de los registros con el campo1='' no sale pero si sale si le coloco que es null ....
En oracle no existe el vacio ''?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No entiendo

Publicado por saenix (30 intervenciones) el 09/01/2006 20:09:47
Saludos

Lo que intentas hacer es poner un vacio en un campo caracter?, En oracle en un campo varchar2 , si intentas actualizarlo de la sig manera : campovarchar2='' , oracle lo interpreta como un nulo, porque un null es algo que es diferente de cero y que no representa ningun valor, entonces esto es igual a vacio; ahora lo que tu quieres poner es un espacio en blanco, entonces solo tienes que dejar un espacio entre las comillas simples y asi quedara el "vacio" como tu lo deseas campovarchar:= ' ';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No entiendo

Publicado por Hector (127 intervenciones) el 10/01/2006 17:08:24
Hola.

La manera mas segura de setear y comparar un valor nulo en oracle es de la siguiente manera:

El seteo con la palabra reservada null (Update tabla set campo=null)
La comparacion con el operador is (Select * from tabla where campo is null o Select * from tabla where campo is not null)
Puedes tambien usar la funcion NVL asi: select * from tabla where NVL(campo, "vacio") = "vacio". La funcion NVL devuelve el valor del campo si no es nulo, o el valor del segundo argumento si el primero es nulo. Funciona para todos los tipos de datos.

Por favor no dudes en preguntar, si podemos ayudarte en algo mas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No entiendo

Publicado por JSL (186 intervenciones) el 12/01/2006 01:58:49
En ORACLE EXISTEN los NULOS o VACIOS como lo mencionas ... y hay un operador para menipularlos ... este es IS NULL o IS NOT NULL

Lo que hiciste al SETEAR campo1='' tambien se hace campo1=null y como veras al final del ejemplo usilizo el OPERADOR IS NULL ... que es diferente a
WHERE CD=NULL
lo correcto es WHERE CD IS NULL

Checa este ejemplo ...
--------------------------------------------------------------------------------------------------------------------
18:52:10 SQL> create table PR_VACIO(
19:15:59 2 id number,
19:16:07 3 cd varchar2(10));

Table created.

Elapsed: 00:00:00.01
19:16:15 SQL> insert into pr_vacio values (1,'HOLA');

1 row created.

Elapsed: 00:00:00.02
19:16:30 SQL> insert into pr_vacio values(2,'EJEMPLO');

1 row created.

Elapsed: 00:00:00.02
19:16:49 SQL> select * from pr_vacio;

ID CD
---------- ----------
1 HOLA
2 EJEMPLO

Elapsed: 00:00:00.02
19:16:54 SQL> update pr_vacio set cd='' where id=2;

1 row updated.

Elapsed: 00:00:00.01
19:17:19 SQL> select * from pr_vacio;

ID CD
---------- ----------
1 HOLA
2

Elapsed: 00:00:00.02
19:17:25 SQL> select id, cd, length(cd) from pr_vacio;

ID CD LENGTH(CD)
---------- ---------- ----------
1 HOLA 4
2

Elapsed: 00:00:00.03
19:18:34 SQL> select * from pr_vacio where cd = '';

no rows selected

Elapsed: 00:00:00.01
19:19:09 SQL> select * from pr_vacio where cd is null;

ID CD
---------- ----------
2

Elapsed: 00:00:00.02
19:19:27 SQL>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar