Ver la Versión Completa : 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
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:
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.
Código SQL [-] (http://www.clubdelphi.com/foros/#)
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,
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 [-] (http://www.clubdelphi.com/foros/#)
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
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 ')
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
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í
...
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:
...
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.
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 [-] (http://www.clubdelphi.com/foros/#)
...
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 [-] (http://www.clubdelphi.com/foros/#)
...
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
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.