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

Llenar campos vacíos de una tabla en consulta sql

Estas en el tema de Llenar campos vacíos de una tabla en consulta sql en el foro de SQL Server en Foros del Web. Tengo una tabla llamada clientes: id, nombre, direccion, colonia,rfc.....sin embargo algunos clientes no cuentan con un rfc. Quisiera hacer una consulta sql donde se visualice ...
  #1 (permalink)  
Antiguo 24/05/2011, 19:48
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Llenar campos vacíos de una tabla en consulta sql

Tengo una tabla llamada clientes: id, nombre, direccion, colonia,rfc.....sin embargo algunos clientes no cuentan con un rfc. Quisiera hacer una consulta sql donde se visualice los clientes que sí cuentan con un rfc y los que no cuentan con él, que se visualice el rfc genérico que sería el siguiente:"AXX010101000".

Select id, nombre, direccion, colonia, RFC from clientes

Agradezco a quien me pueda ayudar.

Saludos!
  #2 (permalink)  
Antiguo 25/05/2011, 07:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Llenar campos vacíos de una tabla en consulta sql

Prueba con esto

Select id, nombre, direccion, colonia, isnull(RFC,'AXX010101000') as RFC from clientes

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/05/2011, 10:42
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Llenar campos vacíos de una tabla en consulta sql

Primero que nada, muchas gracias por contestar mi pregunta. La consulta que me proporcionaste no llena los espacios vacíos de rfc y colonia. Se visualizan vacíos. RFC es tipo char y colonia es varchar y no aparece en dichos registros la palabra "null". Ojalá haya otra consulta que me ayude.

Saludos!
  #4 (permalink)  
Antiguo 25/05/2011, 11:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Llenar campos vacíos de una tabla en consulta sql

Hola losarcosnoch:

La respuesta que da el compañero libra es correcta si el campo es nulo entonces te debe poner el texto que mandas como parámetro, ahora bien, verifica que tu campo no tenga espacios en blanco, ya que si es así el campo obviamente NO ES NULO. podrías hacer algo como esto:

Código:
Select 
case when rtrim(RFC) = '' then 'AXX010101000' else
isnull(RFC, 'AXX010101000') end
...
...
...
Aquí está el script completo de como sería el comportamiento

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (id INT, RFC CHAR(13));
  2. INSERT INTO @Tabla VALUES (1, 'AAAA111111XXX');
  3. INSERT INTO @Tabla VALUES (2, ' ');
  4. INSERT INTO @Tabla VALUES (3, '              ');
  5. INSERT INTO @Tabla VALUES (4, NULL);
  6. INSERT INTO @Tabla VALUES (5, '            -');
  7.  
  8. SELECT id,
  9. CASE WHEN rtrim(RFC) = '' THEN 'AXX010101000' ELSE isnull(RFC, 'AXX010101000') END RFC
  10. FROM @Tabla

En la tabla de ejemplo el registro 2 contiene un espacio en blanco, el registro 3 varios espacios en blanco, el registro 4 es nulo (como vez no es lo mismo espacio en blanco a nulo) y el registro 5 tiene espacios en blanco y al final un caracter. el resultado de esta consulta sería:

Código:
id          RFC
----------- -------------
1           AAAA111111XXX
2           AXX010101000
3           AXX010101000
4           AXX010101000 
5                       -
es decir, para los casos 2, 3 y 4 pone el valor por defecto, mientras que en el resto deja los valores que tiene el campo.

Saludos
Leo.
  #5 (permalink)  
Antiguo 25/05/2011, 11:34
Usuario no validado
 
Fecha de Ingreso: marzo-2008
Ubicación: Morelia Mich. México
Mensajes: 37
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Llenar campos vacíos de una tabla en consulta sql

al ser de tipo char tu campo, recuerda que guarda el tamaño completo (sin es char(13) siempre será de ese tamaño) y si no insertas nada o insertas un espacio en blanco el resto se llena igual hasta el tamaño completo,

SELECT id, nombre, direccion, colonia, case when len(rtrim(RFC))>0 then RFC else rtrim(isnull(RFC,''))+'AXX010101000' end RFC FROM clientes

esta podria ser otra solucion

Última edición por Makoynet; 25/05/2011 a las 11:48
  #6 (permalink)  
Antiguo 25/05/2011, 12:31
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Llenar campos vacíos de una tabla en consulta sql

De acuerdo a mis bases de datos, la última respuesta es la que mejor se adaptó en mi caso. un Millón de gracias.

Pero ahora tengo la siguiente duda con el siguiente query:

Select direccion, colonia from clientes

Cómo hago para que en la consulta se visualicen todos de los clientes con su direccion y colonia, PERO LOS QUE NO POSEEN UN rfc SUSTITUIR SUS DATOS DE DIRECCION por SIN DIRECCION y SU COLONIA por SIN COLONIA. Esto haciendo referencia al rfc que está contenido en la tabla clientes

Saludos!
  #7 (permalink)  
Antiguo 25/05/2011, 13:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Llenar campos vacíos de una tabla en consulta sql

Dices que esta consulta te funciono pues podemos hacer lo sig:


SELECT
case when len(rtrim(RFC))>0 then direccion else 'Sin direccion' end direccion,
case when len(rtrim(RFC))>0 then colonia else 'Sin Colonia' end Colonia,
FROM clientes


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 25/05/2011, 14:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Llenar campos vacíos de una tabla en consulta sql

Funcionó y muy bien.

Gracias a todos por su amabilidad!

Saludos!

Etiquetas: campos, llenar, sql, tabla
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

SíEste tema le ha gustado a 1 personas




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