Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con Valores Null (https://www.clubdelphi.com/foros/showthread.php?t=45733)

crc 12-07-2007 19:51:13

Problema con Valores Null
 
Estimados:


Alguien sabe como eliminar los Null de una Campo con una Query??
o alguna manera de saber si el dato dentro de un campo contiene alguna null???

por ejemplo:
Account_code
104111080XXX

xxx = null

he tratado de usar el update con el like- null, pero no toma el registro indicado ya que no cumple con la seccion.
este problema fue originado por el programa y se supone que Nunca deberia agregar Null a un dato.

Agradecere mucho sus comentarios ya que cualquier idea ayuda.

de ante mano, muchas gracias.

marcoszorrilla 12-07-2007 19:54:48

Código SQL [-]
Select *
From Clientes

Where MiCampo Is Null

Where MiCAmpo Is Not Null

Un Saludo.

ContraVeneno 12-07-2007 20:23:52

En sql Server tienes la función isnull, donde el primer parámetro es el campo que quieres verificar y el segundo parámetro es el valor que el campo deberá tomar en caso de ser nulo:

Código SQL [-]
Select isnull(Precio, 0)
from Articulos

tambien puedes definir en tu base de datos que el campo no acepte campos nulos; así cuando el programa trate de guardar un dato nulo, te saltará una excepción que puedes capturar y tratar como más te convenga.

crc 12-07-2007 21:06:14

Cita:

Empezado por marcoszorrilla
Código SQL [-]
Select *
From Clientes
Where MiCampo Is Null


Where MiCAmpo Is Not Null

Un Saludo.

Esto sirve cuando el campo es nulo completamente pero este no es mi caso.

mi campo es de largo 10...
Cuenta char(10) y el valo que tiene es '1234567NNN' donde las 3 N correspondenden a 3 Nulos.

Yo quiero saber si existe alguna condicion o manera de saber que campos tienen parte de su informacion con Nulos.


Muchas gracias,

crc 12-07-2007 21:07:39

Cita:

Empezado por ContraVeneno
En sql Server tienes la función isnull, donde el primer parámetro es el campo que quieres verificar y el segundo parámetro es el valor que el campo deberá tomar en caso de ser nulo:


Código SQL [-]
Select isnull(Precio, 0)
from Articulos





tambien puedes definir en tu base de datos que el campo no acepte campos nulos; así cuando el programa trate de guardar un dato nulo, te saltará una excepción que puedes capturar y tratar como más te convenga.

Mi BD es Oracle asi que probe con el NVL, pero el NVL es para cuando todo el Campo es Nulo y no solo parte como es mi casi.

una vez que cambiemos estos datos se realizara el cambio para que la base de datos no permita Nulos.:D

gmontes 12-07-2007 22:16:11

Cita:

Empezado por crc
Esto sirve cuando el campo es nulo completamente pero este no es mi caso.

mi campo es de largo 10...
Cuenta char(10) y el valo que tiene es '1234567NNN' donde las 3 N correspondenden a 3 Nulos.

Yo quiero saber si existe alguna condicion o manera de saber que campos tienen parte de su informacion con Nulos.


Muchas gracias,

no deben ser nulos, sino espacios. '1234567sss', debes verificar si es siempre de derecha a izquierda donde quedan los espacios para rellenar.
select * from cliente where cuenta = substr(trim('1234567 ')+space(10),1,10)




y que la comparacion se haga o quitar los espacios
select * from cliente where cuenta = trim('1234567 ')

Cura 03-09-2007 05:04:44

Hola, el insull y el coalesce solo funciona con campos numericos q devuelven null, tengo el mismo problema, como puedo hacer para manejar el null?
ya que cuando el resultado del query es null la dbgrid no lo acepta y sale un error.

ContraVeneno 03-09-2007 16:14:00

A ver... como que te estas confundiendo bastante...

un campo o es null o no lo es... es imposible que sea una parte valor y otra parte nulo.
Como ya te dijeron, tal ves sean espacios en blanco.

Mas bien tu problema va por otro lado y no has sabido explicarte.

ramonc 03-09-2007 17:11:32

quizás te ayude saber el length del campo?
o como te han indicado más arriba, hacer uso de las funciones que tratan los strings
o usar la funcion isnull
o una combinación de todo lo anterior

si no te explicas mejor...

un saludo

Chris 03-09-2007 17:12:55

Cita:

Empezado por crc (Mensaje 214057)
Esto sirve cuando el campo es nulo completamente pero este no es mi caso.

mi campo es de largo 10...
Cuenta char(10) y el valo que tiene es '1234567NNN' donde las 3 N correspondenden a 3 Nulos.

Yo quiero saber si existe alguna condicion o manera de saber que campos tienen parte de su informacion con Nulos.

Muchas gracias,

Seguramente no te has sabido explicar, por lo que entendí, lo que quieres es ¿filtrar por la longitud del texto? o sea, que "1234567NNN" ¿correspondería a "1234567"? Si este es el caso, yo utilizo un motor que me permite ver la longitud del texto, no sé si estará disponible en todos los motores sql, pero lo harias así

Código SQL [-]
...
Where (CHAR_LENGTH(tabla1.micampo) < 10) /*no nulos*/
...

si este no es el caso, y deseas buscar las 3 Ns al final, entonces con este componente yo utilizaría un codigo como este:
Código SQL [-]
...
Where (RIGHTSTR(tabla1.micampo,3) = 'NNN') /* en este caso devolveria los nulos */
/* ------ */
Where (RIGHTSTR(tabla1.micampo,3) <> 'NNN') /* en este otro caso devolveria los no nulos */

no sé si la función RIGHTSTR es estandar en SQL o existe alguna que ofrezca la misma función, creo que lo último es más posible. Espero que te hata servido de ayuda mi comentario.

crc 20-09-2007 16:53:44

Cita:

Empezado por D&W (Mensaje 227937)
Seguramente no te has sabido explicar, por lo que entendí, lo que quieres es ¿filtrar por la longitud del texto? o sea, que "1234567NNN" ¿correspondería a "1234567"? Si este es el caso, yo utilizo un motor que me permite ver la longitud del texto, no sé si estará disponible en todos los motores sql, pero lo harias así


Código SQL [-]
...
Where (CHAR_LENGTH(tabla1.micampo) < 10) /*no nulos*/
...





si este no es el caso, y deseas buscar las 3 Ns al final, entonces con este componente yo utilizaría un codigo como este:

Código SQL [-]
...
Where (RIGHTSTR(tabla1.micampo,3) = 'NNN') /* en este caso devolveria los nulos */
/* ------ */
Where (RIGHTSTR(tabla1.micampo,3) <> 'NNN') /* en este otro caso devolveria los no nulos */





no sé si la función RIGHTSTR es estandar en SQL o existe alguna que ofrezca la misma función, creo que lo último es más posible. Espero que te hata servido de ayuda mi comentario.


Muchas Gracias a todos los que respondieron, la verdad es que todas me ayudaron un poco, asi que gracias a todos.

:D


La franja horaria es GMT +2. Ahora son las 18:10:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi