SQL - Duda restricción caracteres SQL

   
Vista:

Duda restricción caracteres SQL

Publicado por Raul (6 intervenciones) el 21/03/2016 09:06:35
Tengo una duda, que espero me podáis resolver, resulta que tengo una base de datos, en la cual figura una tabla que se llama dirección y dicha tabla tiene registros que me gustaría unificar/restringir, me explico, los registros vienen escritos como CALLE, c/ y c.

Lo que necesito es que a la hora de devolver la consulta me presente todos los datos de la tabla dirección con un empiece de CL y después la calle que tenga registrada, omitiendo o cambiando los empieces de CALLE, C/ y C.

He visto el comando DECODE pero no logro que me haga lo que quiero.

¿Serian tan amables de ayudarme?

Muchas gracias, 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
Imágen de perfil de Isaias

Duda restricción caracteres SQL

Publicado por Isaias (691 intervenciones) el 21/03/2016 16:52:22
Serias tan amable de mostrarnos una serie de registros y decirnos que version de SQL Server?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda restricción caracteres SQL

Publicado por Raulsa (6 intervenciones) el 21/03/2016 17:02:30
Buenas tardes Isasias,

He descubierto la sentencia:

select replace(replace(replace(replace(replace(domicilio,'calle','C/'),'CL','C/'),'CL','C/'),'C\','C/'),'CC','C/') as Domicilio
from usuarios

Pero no se donde iría en el código que adjunto.

¿Podrías ayudarme por favor?

Gracias, un saludo.
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
Imágen de perfil de Isaias

Duda restricción caracteres SQL

Publicado por Isaias (691 intervenciones) el 21/03/2016 23:48:07
Pues donde va DOMICILIO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
DECLARE
CURSOR c11 IS
SELECT DISTINCT apellido1,apellido2,nombre,CONCAT(substr(fechanacimiento,7,2)||'/'||SUBSTR(fechanacimiento,5,2)||'/',SUBSTR(fechanacimiento,1,4)),
nombrepadre,nombremadre,UPPER(paisnacimiento),dni,pasaporte,
replace(replace(replace(replace(replace(domicilio,'calle','C/'),'CL','C/'),'CL','C/'),'C\','C/'),'CC','C/') as Domicilio,
--domicilio,
DECODE(UPPER(provincianacimiento),
'ÁLAVA'     ,'01','ALAVA'    ,'01','ARABA'    ,'01','ALBACETE'   ,'02','ALICANTE'      ,'03','ALMERIA'   ,'04','ALMERÍA'   , '04',
'AVILA'     ,'05','ÁVILA'    ,'05','BADAJOZ'  ,'06','BALEARES'   ,'07','ISLAS BALEARES','07','BARCELONA' ,'08',
'BURGOS'    ,'09','CACERES'  ,'10','CÁCERES'  ,'10','CADIZ'      ,'11','CÁDIZ'         ,'11','CASTELLON' ,'12','CASTELLÓN' , '12','CIUDAD REAL','13',
'CORDOBA'   ,'14','CÓRDOBA'  ,'14','A CORUÑA' ,'15','CORUÑA'     ,'15','LA CORUÑA'     ,'15','CUENCA'    ,'16',
'GIRONA'    ,'17','GERONA'   ,'17','GRANADA'  ,'18','GUADALAJARA','19','GIPUZKOA'      ,'20','GUIPUZCOA' ,'20',
'HUELVA'    ,'21','HUESCA'   ,'22','JAEN'     ,'23','JAÉN'       ,'23','LEÓN'          ,'24','LEON'      ,'24',
'LA RIOJA'  ,'26','RIOJA'    ,'26','LUGO'     ,'27','MADRID'     ,'28','MALAGA'        ,'29','MÁLAGA'    ,'29','MURCIA'    ,'30',
'NAVARRA'   ,'31','OURENSE'  ,'32','ORENSE'   ,'32','ASTURIAS'   ,'33','PALENCIA'      ,'34','LAS PALMAS','35','PALMAS'    ,'35',
'PONTEVEDRA','36','SALAMANCA','37','TENERIFE' ,'38','CANTABRIA'  ,'39','SEGOVIA'       ,'40','SEVILLA'   ,'41',
'SORIA'     ,'42','TARRAGONA','43','TERUEL'   ,'44','TOLEDO'     ,'45','VALENCIA'      ,'46','VALLADOLID','47',
'VIZCAYA'   ,'48','BIZKAIA'  ,'48','ZAMORA'   ,'49','ZARAGOZA'   ,'50','CEUTA'         ,'51','MELILLA'   ,'52'),
localidadnacimiento
FROM sica.personasintermedias
--WHERE apellido1 is not null and fvalidaciondoc > '201602240000' and CODEMPRESA NOT IN ('MUN','FGC','DGP','ADN','MPR','DPE');
WHERE apellido1 is not null and fvalidaciondoc > (select to_char(sysdate,'yyyymmdd') from dual)||'0000' and CODEMPRESA NOT IN ('MUN','FGC','DGP','ADN','MPR', 'DPE');
v_fila VARCHAR2(600);
v_numfila number(5);
v_nombrefichero varchar2(16);
v_basenombrefichero varchar2(9);
v_envio number(2);
v_fichero UTL_FILE.FILE_TYPE;
v_fecha varchar2(6);
v_orden number(5);
-- Variables para recoger valores de la consulta
c_apellido1 PersonasIntermedias.apellido1%TYPE;
c_apellido2 PersonasIntermedias.apellido2%TYPE;
c_nombre PersonasIntermedias.nombre%TYPE;
--c_fechanacimiento PersonasIntermedias.fechanacimiento%TYPE;
c_fechanacimiento VARCHAR2(10);
c_nombrepadre PersonasIntermedias.nombrepadre%TYPE;
c_nombremadre PersonasIntermedias.nombremadre%TYPE;
c_paisnacimiento PersonasIntermedias.paisnacimiento%TYPE;
c_dni PersonasIntermedias.dni%TYPE;
c_pasaporte PersonasIntermedias.pasaporte%TYPE;
c_domicilio PersonasIntermedias.domicilio%TYPE;
--c_provincianacimiento PersonasIntermedias.provincianacimiento%TYPE;
c_provincianacimiento VARCHAR2(3);
c_localidadnacimiento PersonasIntermedias.localidadnacimiento%TYPE;
-- FIN Variables
BEGIN
v_envio:=0;
 
SELECT to_char(sysdate,'yymmdd') INTO v_fecha from dual;
v_nombrefichero:='MAD'||v_fecha||'1'||'.txt';
dbms_output.enable(500000);
OPEN c11;
FETCH c11 INTO c_apellido1,c_apellido2,c_nombre,c_fechanacimiento,c_nombrepadre,c_nombremadre,c_paisnacimiento,c_dni,c_pasaporte,c_domicilio,c_provincianacimiento,c_localidadnacimiento;
 
v_fichero := UTL_FILE.FOPEN ('DIR_TEMP',v_nombrefichero,'w',32767);
v_orden := 1; -- Si entramos al While es la primera
 
WHILE c11%FOUND LOOP
	IF c_paisnacimiento = 'ESPAÑA' THEN -- DNI
	   dbms_output.put_line (CONCAT(c_apellido1||'|'||c_apellido2||'|'||c_nombre||'|'||c_fechanacimiento||'|'||c_nombrepadre||'|'||c_nombremadre||'|'||UPPER(c_paisnacimiento)||'|'||c_dni||'|'||            '|'||c_domicilio||'|'||c_provincianacimiento||'|'||c_localidadnacimiento||'|'||'MAD'||v_fecha,v_orden));
	   v_orden := v_orden+1;
	ELSE -- No nacido en España
   	   IF (substr(c_dni,1,1) = 'X') OR (substr(c_dni,1,1) = 'Y') THEN -- NIE
	      dbms_output.put_line (CONCAT(c_apellido1||'|'||           '|'||c_nombre||'|'||c_fechanacimiento||'|'||c_nombrepadre||'|'||c_nombremadre||'|'||UPPER(c_paisnacimiento)||'|'||       '|'||c_dni||'|'||c_domicilio||'|'||'|'||c_localidadnacimiento||'|'||'MAD'||v_fecha,v_orden));
	      v_orden := v_orden+1;
	   ELSE
		IF (length(c_dni) >= 5) THEN
 			dbms_output.put_line (CONCAT(c_apellido1||'|'||c_apellido2||'|'||c_nombre||'|'||c_fechanacimiento||'|'||c_nombrepadre||'|'||c_nombremadre||'|'||UPPER(c_paisnacimiento)||'|'||c_dni||'|'||            '|'||c_domicilio||'|'||c_provincianacimiento||'|'||c_localidadnacimiento||'|'||'MAD'||v_fecha,v_orden));
			v_orden := v_orden+1;
		ELSE
            dbms_output.put_line (CONCAT(c_apellido1||'|'||c_apellido2||'|'||c_nombre||'|'||c_fechanacimiento||'|'||c_nombrepadre||'|'||c_nombremadre||'|'||UPPER(c_paisnacimiento)||'|'||c_pasaporte||'|'||     '|'||c_domicilio||'|'||'|'||c_localidadnacimiento||'|'||'MAD'||v_fecha,v_orden));
	   		v_orden := v_orden+1;
		END IF;
	   END IF;
	END IF;
FETCH c11 INTO c_apellido1,c_apellido2,c_nombre,c_fechanacimiento,c_nombrepadre,c_nombremadre,c_paisnacimiento,c_dni,c_pasaporte,c_domicilio,c_provincianacimiento,c_localidadnacimiento;
 
END LOOP;
UTL_FILE.FCLOSE(v_fichero);
--dbms_output.disable;
CLOSE c11;
END;
/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Duda restricción caracteres SQL

Publicado por Raul (6 intervenciones) el 22/03/2016 08:40:39
Perfecto! muchas gracias por tu ayuda Isaias, me sirvió de mucho.

Un saludo.
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
Imágen de perfil de Isaias

Duda restricción caracteres SQL

Publicado por Isaias (691 intervenciones) el 23/03/2016 16:45:38
De nada, 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