Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Null = Nulo??

Estas en el tema de Null = Nulo?? en el foro de Mysql en Foros del Web. Buenas tardes!! Tengo el siguiente problemilla. en acces hago una migracion de datos de tablas access a tablas Mysql. Hasta ahora he migrado todas las ...
  #1 (permalink)  
Antiguo 28/07/2010, 08:42
 
Fecha de Ingreso: noviembre-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
Null = Nulo??

Buenas tardes!!
Tengo el siguiente problemilla. en acces hago una migracion de datos de tablas access a tablas Mysql. Hasta ahora he migrado todas las tablas sin problemas pero me he encontrado con lo siguiente:

selecciono unos campos de la tabla de access y los inserto en la tabla mysql, ciertos valores son numéricos y pueden estar vacios, `pues estos valores son los que me dan fallo al querer insertarlos. En la tabla de mysql ha he puesto que el campo puede ser null.

Lo que mas me mosquea es que en el INSERT he intentado meter esos valores a mano poniendo null y no hay problemas pero al ver que dato cojo de la consulta de access me doy cuento que los valores los recojo como nulo.

No es lo mismo nulo que null?? Por lo que he probado parece que no porque he hecho a modo prueba un select case
Select Case punteroCompresion2("Asentamiento2")
Case Nulo
Asentamiento2 = Null
Case Else
Asentamiento2 = punteroCompresion2("Asentamiento2")
End Select

He probado a poner case nulo o case null para ver si en algun momento entra en esa parte del case y siente se mete por el else...
Por lo tanto no es lo mismo?? Como podria hacerlo??

Muchas gracias de antemano y un saludo!!
  #2 (permalink)  
Antiguo 28/07/2010, 08:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Null = Nulo??

Cita:
No es lo mismo nulo que null?
Si tu pregunta es si NULL es igual a el caracter nulo o vacío, la respuesta es NO.

El caracter nulo es un caracter real, que representa un espacio sin datos. NULL es un estado, no un caracter, y se lo define como un puntero a la nada, o bien un no-dato.

El estado de NULL es algo difícil de comprender a veces para la gente habituada a programar, pero es lo más parecido al Nothing de visua Basic.Net, aunque no se trata del mismo objeto.

Como se trata más bien de un estado o de un resultado y no de un dato no es posible usarlo en operaciones lógicas o matemáticas de ningún tipo. Esto significa que ninguno de los operadores ni funciones para datos puede operar con él. En estos casos existen operadores, funciones y cláusulas específicas:

IS NULL, IS NOT NULL, IFNULL(), etc.

Esas son las que hay que usar.

Pero cuando se transfiere datos vía conectores, el problema es recordar que los conectores no se llevan bien con el NULL, por lo que hay que revisar el manual para saber cómo hacerlo.

En el caso de sentencias de inserción, el NULL debe ir escrito tal cual es y no ponerlo entre comillas ni apóstrofes.

Eso es válido:

Código MySQL:
Ver original
  1. INSERT INTO TABLA(A, B) VALUES (1, NULL);
Esto no:
Código MySQL:
Ver original
  1. INSERT INTO TABLA(A, B) VALUES (1, 'NULL');
porque 'null' es una cadena de textoi...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/07/2010, 09:02
 
Fecha de Ingreso: noviembre-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Null = Nulo??

Muchas gracias!!
Pero entonces necesito hacer la conversion??
Es decir necesito utilizar las funciones que me comentas y con ellas asignar el valor null??
Si que es lioso esto de los valores nulos....

Gracias de nuevo
  #4 (permalink)  
Antiguo 28/07/2010, 09:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Null = Nulo??

Según el manual de MySQL, si usas el MySQL ODBC Connector 3.51 no debería haber problema al enviar valores NULL entre Access y MySQL.
Ten cuidado al leer los valores desde MySQL hacia otra aplicación, porque MySQL admite fechas con formato '0000-00-00' y '0000-00-00 00:00:00', cosa que otras aplicaciones no, así como también valores NULL en campos de tipo DATE, TIME, DATETIME, TIMESTAMP, etc.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/07/2010, 09:52
 
Fecha de Ingreso: noviembre-2005
Mensajes: 94
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Null = Nulo??

Gracias!!
En principio con el resto de valores no tengo problemas pero con estos datos númericos.
Es mas he hecho lo siguiente:
If IsNull(punteroCompresion2("EscurrimientoT50")) Then
EscurrimientoT50 = Null
Else
EscurrimientoT50 = punteroCompresion2("EscurrimientoT50")
End If


para comprobar que dato me viene de access y si es nulo que me asigne null y ni por esas, en el if va por el then supuestamente asigna el valor null (aunque segun lo que me dices esto seria redundante si acces y mysql se entienden entre si) pero al hacer

mibase.Execute
("INSERT INTO 001compresion2(NumTrabajo, Asentamiento2,
EscurrimientoDf, EscurrimientoT50)
VALUES
('" & punteroCompresion2("NumTrabajo") & "', " & Asentamiento2 & " ," &
EscurrimientoDf & ", " & EscurrimientoT50 & ")")


Las variables siguen teniendo el valor nulo que no null y me sigue dando error pero si la variable la sustituyo por los valores null

mibase.Execute
("INSERT INTO 001compresion2(NumTrabajo, Asentamiento2, EscurrimientoDf, EscurrimientoT50)
VALUES ('" & punteroCompresion2("NumTrabajo") & "', null ,null, null)")

Lo hace sin problemas.. Asi que no se que problema puedo tener con el nulo y el null???
Muchas gracias
  #6 (permalink)  
Antiguo 28/07/2010, 10:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Null = Nulo??

Cita:
Las variables siguen teniendo el valor nulo que no null y me sigue dando error pero si la variable la sustituyo por los valores null
Es posible que Access trabaje con DBNull y no con Null. Fíjate bien (Visual Basic.Net opera con este tipo de dato cuando se trata de valores provenientes de la base), pero en cualquier caso lo que debes hacer es reemplazar el contenido de esa variable por NULL en la cadena creada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: null, nulo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:18.