SQL - Completar datos no existentes en tabla

 
Vista:
sin imagen de perfil

Completar datos no existentes en tabla

Publicado por Cglez (14 intervenciones) el 24/05/2011 18:11:44
Hola, a todos.

Tengo una tabla llamada clientes con los campos ID, NOMBRE, RFC, COLONIA, POLBACION.......Pero algunos clientes no poseen RFC y COLONIA. Necesito un reporte donde se visualicen todos los clientes y sus datos, y a los clientes que no proporcionaron su RFC se les asigne un generico (XAXX010101000) y los que no tienen colonia se visualice "Sin Colonia". Tengo el siguiente query:

Select ID, NOMBRE, RFC, POBLACION, COLONIA FROM CLIENTES

Agradezco a quien pueda ayudarme.

Saludos!
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
sin imagen de perfil

Completar datos no existentes en tabla

Publicado por Cglez (14 intervenciones) el 25/05/2011 18:39:29
Leo, primero que nada, muchas gracias por contestar mi pregunta.

Trabajo con SQL. 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!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Completar datos no existentes en tabla

Publicado por Leonardo Josué (1173 intervenciones) el 25/05/2011 16:44:26
Hola Cglez:

No mencionas qué manejador de BD estás utilizando, te recuerdo que la sintaxis entre las distintas BD puede variar mucho. Por lo general, cada BD proporciona modificadores de valores nulos para hacer lo que pretendes hacer, por ejemplo:

PARA MYSQL

1
2
3
Select ID, NOMBRE, IFNULL(RFC, 'XAXX010101000') RFC,
POBLACION, IFNULL(COLONIA, 'Sin Colonia') COLONIA
FROM CLIENTES


PARA SQL SERVER

1
2
3
Select ID, NOMBRE, ISNULL(RFC, 'XAXX010101000') RFC,
POBLACION, ISNULL(COLONIA, 'Sin Colonia') COLONIA
FROM CLIENTES


PARA ORACLE

1
2
3
Select ID, NOMBRE, NVL(RFC, 'XAXX010101000') RFC,
POBLACION, NVL(COLONIA, 'Sin Colonia') COLONIA
FROM CLIENTES


Si no utilizas ninguno de estos manejadores es cuestión de que investigues en la documentación alguna función semejante a estas que te pongo.

Saludos
Leo
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Completar datos no existentes en tabla

Publicado por Leonardo Josué (1173 intervenciones) el 25/05/2011 22:35:04
Hola de nuevo Cglez:

Veo que publicaste tu pregunta en más de un foro, ya te había contestado en otro "Foros del Web", pero repito mi observación también aquí:

La sentencia que te pongo es correcta, si tu ejecutas esto:

1
Select ISNULL(null, 'XAXX010101000') RFC


el resultado será que presenta el texto 'XAXX010101000'. Ahora bien, creo que lo que puede estar pasando es que el campo RFC no venga como nulo, sino con uno o más espacios en blanco. te recuerdo que un espacio en blanco NO ES NULO, por lo tanto no se reemplazaría el valor.

Intenta con este código:

select case when rtrim(RFC) = '' then 'XAXX010101000' else ISNULL(null, 'XAXX010101000') end;

Con esto reemplazará todas los campos con null o con espacios en blanco poniendo el texto por defecto.

Aquí te dejo todo el ejemplo completo para que lo pruebes:

1
2
3
4
5
6
7
8
9
declare @Tabla TABLE (id int, RFC char(13));
INSERT INTO @Tabla VALUES (1, 'AAAA111111XXX');
INSERT INTO @Tabla VALUES (2, ' ');
INSERT INTO @Tabla VALUES (3, '            ');
INSERT INTO @Tabla VALUES (4, NULL);
INSERT INTO @Tabla VALUES (5, '           -');
SELECT id,
case when rtrim(RFC) = '' then 'AXX010101000' else isnull(RFC, 'AXX010101000') end RFC
FROM @Tabla


Saludos
Leo
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