09/01/2007, 07:00
|
| | | Fecha de Ingreso: noviembre-2004 Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años Puntos: 9 | |
Re: Remplazar cadenas. Bueno, yo tenia esto hecho, igula no es muy eficiente (tarda mucho en compilar), pero hasta que tengamos algo mejor...
Esto que te pongo compararia las direcciones quitando los acentos (y en mi caso tambien las eñes) de las vocales tanto en la columna DIRECCION como en la variable con la que compares (NOMBRE)...
Código:
Function QuitaCaracterKK(cadena varchar2) return varchar2 is
retcad varchar2(2000);
Begin
--retcad := REPLACE(cadena, ' ', '');
retcad := REPLACE(cadena, 'á', 'a');
retcad := REPLACE(retcad, 'é', 'e');
retcad := REPLACE(retcad, 'í', 'i');
retcad := REPLACE(retcad, 'ó', 'o');
retcad := REPLACE(retcad, 'ú', 'u');
retcad := REPLACE(retcad, 'Á', 'A');
retcad := REPLACE(retcad, 'É', 'E');
retcad := REPLACE(retcad, 'Í', 'I');
retcad := REPLACE(retcad, 'Ó', 'O');
retcad := REPLACE(retcad, 'Ú', 'U');
retcad := REPLACE(retcad, 'Ñ', 'N');
retcad := REPLACE(retcad, 'ñ', 'n');
-- REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
-- REPLACE(REPLACE(REPLACE(REPLACE(cadena, 'á', 'a'), 'é', 'e'), 'í', 'i'), 'ó', 'o'), 'ú', 'u'), 'Á', 'A'), 'É', 'E'), 'Í', 'I'), 'Ó', 'O'), 'Ú', 'U'), 'Ñ', 'N'), 'ñ', 'n')
return retcad;
End;
Y luego, en el SELECT:
Código:
Select count(*)
into cuantas
from hve_personas
where UPPER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(direccion,
'á',
'a'),
'é',
'e'),
'í',
'i'),
'ó',
'o'),
'ú',
'u'),
'Á',
'A'),
'É',
'E'),
'Í',
'I'),
'Ó',
'O'),
'Ú',
'U'),
'Ñ',
'N'),
'ñ',
'n')) = UPPER(QuitaCaracterKK(Nombre));
|