Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
2| Name | Data Type | Length | Description |
|---|---|---|---|
| @domicilio1 | varchar | 500 | |
| @domicilio2 | varchar | 500 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
declare @resp int
exec @resp = [sp_comparo_domicilios] 'DERMIDIO NARVAEZ 01¥0','DERMIDIO NARVAEZ 100'
select @resp
--select distinct domicilio from domicilios_todos where cuit = '27208925658'
--[sp_comparo_domicilios] 'cabildo 3280 3 a','av cordoba 3280 3 a'
Conversion failed when converting the varchar value '¥' to data type int.
*/
CREATE OR ALTER PROCEDURE dbo.sp_comparo_domicilios
@domicilio1 varchar(500) = null,
@domicilio2 varchar(500) = null
AS
BEGIN
SET NOCOUNT ON;
declare @cant1 smallint = 0
declare @cant2 smallint = 0
declare @palabras1 table (nro smallint, palabra varchar(100))
declare @palabras2 table (nro smallint, palabra varchar(100))
declare @pal varchar(100)
declare @i smallint, @j smallint
set @domicilio1 = REPLACE(@domicilio1,'¥','')
set @domicilio2 = REPLACE(@domicilio2,'¥','')
IF (@domicilio1 = @domicilio2)
begin
-- select '1' as respuesta
return '1'
end
--- Paso 1: separo las palabras de los domicilios
while (@domicilio1 like '% %')
begin
set @domicilio1 = replace(@domicilio1,' ',' ')
end
while (@domicilio2 like '% %')
begin
set @domicilio2 = replace(@domicilio2,' ',' ')
end
set @i = len(@domicilio1)
set @j = len(@domicilio2)
if (@i = 0 or @i is null or @j = 0 or @j is null) -- una de los domicilios es nulo
begin
--select '0' as respuesta
return '0'
end
-- domicilio 1
set @i = len(@domicilio1)
set @j = CHARINDEX(' ', @domicilio1)
while (@j < @i and @j > 0)
begin
set @cant1 = @cant1 + 1
set @pal = (SELECT SUBSTRING(@domicilio1, 1, CHARINDEX(' ', @domicilio1) - 1))
insert into @palabras1 values (@cant1, @pal)
SET @domicilio1 = (select SUBSTRING(@domicilio1, CHARINDEX(' ', @domicilio1) +1, LEN(@domicilio1)))
set @i = len(@domicilio1)
set @j = CHARINDEX(' ', @domicilio1)
end
set @cant1 = @cant1 + 1
set @pal = @domicilio1
insert into @palabras1 values (@cant1, @pal)
-- domicilio 2
set @i = len(@domicilio2)
set @j = CHARINDEX(' ', @domicilio2)
while (@j < @i and @j > 0)
begin
set @cant2 = @cant2 + 1
set @pal = (SELECT SUBSTRING(@domicilio2, 1, CHARINDEX(' ', @domicilio2) - 1))
insert into @palabras2 values (@cant2, @pal)
SET @domicilio2 = (select SUBSTRING(@domicilio2, CHARINDEX(' ', @domicilio2) +1, LEN(@domicilio2)))
set @i = len(@domicilio2)
set @j = CHARINDEX(' ', @domicilio2)
end
set @cant2 = @cant2 + 1
set @pal = @domicilio2
insert into @palabras2 values (@cant2, @pal)
/*
select * from @palabras1
select * from @palabras2
*/
-- Comparo las alturas de los domicilios
declare @Numero_1 varchar(10) = null,
@Numero_2 varchar(10) = null
set @i = 2
while (@i <= @cant1)
BEGIN
IF (@i = 2 AND (select palabra from @palabras1 where nro = 1) = 'CALLE')
BEGIN
set @i = @i + 1
CONTINUE
END
IF (@i = 3 AND (select palabra from @palabras1 where nro = 1) = 'CALLE'
AND (select palabra from @palabras1 where nro = 2) in ('N', 'NRO', 'NRO.','N*','Nº'))
BEGIN
set @i = @i + 1
CONTINUE
END
set @pal = (select palabra from @palabras1 where nro = @i)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @pal = replace(@pal,',','')
set @pal = replace(@pal,'-','')
set @pal = replace(@pal,'.','')
set @Numero_1 = convert(int,@pal)
update @palabras1 set palabra = null where nro = @i
break
END
set @i = @i + 1
END
set @i = 2
while (@i <= @cant2)
BEGIN
IF (@i = 2 AND (select palabra from @palabras2 where nro = 1) = 'CALLE')
BEGIN
set @i = @i + 1
CONTINUE
END
IF (@i = 3 AND (select palabra from @palabras2 where nro = 1) = 'CALLE'
AND (select palabra from @palabras2 where nro = 2) in ('N', 'NRO', 'NRO.','N*','Nº'))
BEGIN
set @i = @i + 1
CONTINUE
END
set @pal = (select palabra from @palabras2 where nro = @i)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @pal = replace(@pal,',','')
set @pal = replace(@pal,'-','')
set @pal = replace(@pal,'.','')
set @Numero_2 = convert(int,@pal)
update @palabras2 set palabra = null where nro = @i
break
END
set @i = @i + 1
END
IF ((@Numero_1 IS NULL AND @Numero_2 IS NOT NULL) OR
(@Numero_2 IS NULL AND @Numero_1 IS NOT NULL) OR
(@Numero_1 != @Numero_2))
BEGIN
--select '0' as respuesta
return '0'
END
--select @Numero_1, @Numero_2
/*
PARA LOS CASOS DE CALLES QUE EL NOMBRE ES UN NRO.
*/
declare @Calle varchar(100) = null,
@Calle2 varchar(100) = NULL
IF ((select palabra from @palabras1 where nro = 1) = 'CALLE')
BEGIN
set @pal = (select palabra from @palabras1 where nro = 2)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle = @pal
END
else
BEGIN
if ((select palabra from @palabras1 where nro = 2) in ('N','NRO','NRO.','N*','Nº'))
begin
set @pal = (select palabra from @palabras1 where nro = 3)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle = @pal
END
end
END
END
set @pal = (select palabra from @palabras1 where nro = 1)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle = @pal
END
---
IF ((select palabra from @palabras2 where nro = 1) = 'CALLE')
BEGIN
set @pal = (select palabra from @palabras2 where nro = 2)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle2 = @pal
END
else
BEGIN
if ((select palabra from @palabras2 where nro = 2) in ('N','NRO','NRO.','N*','Nº'))
begin
set @pal = (select palabra from @palabras2 where nro = 3)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle2 = @pal
END
end
END
END
set @pal = (select palabra from @palabras2 where nro = 1)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle2 = @pal
END
IF (@Calle = @Calle2 AND @Numero_1 = @Numero_2)
BEGIN
--select '1' as respuesta
return '1'
END
----
declare @largas smallint = 0,
@Cortas smallint = 0
declare @pal1 varchar(100) = null,
@pal2 varchar(100) = null
set @i = 1
set @j = 1
while (@i <= @cant1)
begin
set @j = 1
while (@j <= @cant2)
begin
set @pal1 = (select palabra from @palabras1 where nro = @i)
set @pal2 = (select palabra from @palabras2 where nro = @j)
if (@pal1 = @pal2 and @pal1 != 'PISO' and @pal1 not like 'PISO:%' and @pal1 not like 'DPTO:%' and @pal1 not like 'DTO:%' )
begin
if (LEN(@pal1) > 3) begin set @Largas = @Largas + 1 end
else begin set @Cortas = @Cortas + 1 end
end
set @j = @j + 1
end
set @i = @i + 1
end
if (@Numero_1 is not null) set @cant1 = @cant1 - 1
if (@Numero_2 is not null) set @cant2 = @cant2 - 1
IF (@largas >= 1 OR @Cortas >= 3 OR (@largas + @Cortas) = @cant2 OR
(@largas + @Cortas) = @cant1)
begin
-- select '1' as respuesta
return '1'
end
--select '0' as respuesta
return '0'
END
GO
GO
/*
declare @resp int
exec @resp = [sp_comparo_domicilios] 'DERMIDIO NARVAEZ 01¥0','DERMIDIO NARVAEZ 100'
select @resp
--select distinct domicilio from domicilios_todos where cuit = '27208925658'
--[sp_comparo_domicilios] 'cabildo 3280 3 a','av cordoba 3280 3 a'
Conversion failed when converting the varchar value '¥' to data type int.
*/
CREATE OR ALTER PROCEDURE dbo.sp_comparo_domicilios
@domicilio1 varchar(500) = null,
@domicilio2 varchar(500) = null
AS
BEGIN
SET NOCOUNT ON;
declare @cant1 smallint = 0
declare @cant2 smallint = 0
declare @palabras1 table (nro smallint, palabra varchar(100))
declare @palabras2 table (nro smallint, palabra varchar(100))
declare @pal varchar(100)
declare @i smallint, @j smallint
set @domicilio1 = REPLACE(@domicilio1,'¥','')
set @domicilio2 = REPLACE(@domicilio2,'¥','')
IF (@domicilio1 = @domicilio2)
begin
-- select '1' as respuesta
return '1'
end
--- Paso 1: separo las palabras de los domicilios
while (@domicilio1 like '% %')
begin
set @domicilio1 = replace(@domicilio1,' ',' ')
end
while (@domicilio2 like '% %')
begin
set @domicilio2 = replace(@domicilio2,' ',' ')
end
set @i = len(@domicilio1)
set @j = len(@domicilio2)
if (@i = 0 or @i is null or @j = 0 or @j is null) -- una de los domicilios es nulo
begin
--select '0' as respuesta
return '0'
end
-- domicilio 1
set @i = len(@domicilio1)
set @j = CHARINDEX(' ', @domicilio1)
while (@j < @i and @j > 0)
begin
set @cant1 = @cant1 + 1
set @pal = (SELECT SUBSTRING(@domicilio1, 1, CHARINDEX(' ', @domicilio1) - 1))
insert into @palabras1 values (@cant1, @pal)
SET @domicilio1 = (select SUBSTRING(@domicilio1, CHARINDEX(' ', @domicilio1) +1, LEN(@domicilio1)))
set @i = len(@domicilio1)
set @j = CHARINDEX(' ', @domicilio1)
end
set @cant1 = @cant1 + 1
set @pal = @domicilio1
insert into @palabras1 values (@cant1, @pal)
-- domicilio 2
set @i = len(@domicilio2)
set @j = CHARINDEX(' ', @domicilio2)
while (@j < @i and @j > 0)
begin
set @cant2 = @cant2 + 1
set @pal = (SELECT SUBSTRING(@domicilio2, 1, CHARINDEX(' ', @domicilio2) - 1))
insert into @palabras2 values (@cant2, @pal)
SET @domicilio2 = (select SUBSTRING(@domicilio2, CHARINDEX(' ', @domicilio2) +1, LEN(@domicilio2)))
set @i = len(@domicilio2)
set @j = CHARINDEX(' ', @domicilio2)
end
set @cant2 = @cant2 + 1
set @pal = @domicilio2
insert into @palabras2 values (@cant2, @pal)
/*
select * from @palabras1
select * from @palabras2
*/
-- Comparo las alturas de los domicilios
declare @Numero_1 varchar(10) = null,
@Numero_2 varchar(10) = null
set @i = 2
while (@i <= @cant1)
BEGIN
IF (@i = 2 AND (select palabra from @palabras1 where nro = 1) = 'CALLE')
BEGIN
set @i = @i + 1
CONTINUE
END
IF (@i = 3 AND (select palabra from @palabras1 where nro = 1) = 'CALLE'
AND (select palabra from @palabras1 where nro = 2) in ('N', 'NRO', 'NRO.','N*','Nº'))
BEGIN
set @i = @i + 1
CONTINUE
END
set @pal = (select palabra from @palabras1 where nro = @i)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @pal = replace(@pal,',','')
set @pal = replace(@pal,'-','')
set @pal = replace(@pal,'.','')
set @Numero_1 = convert(int,@pal)
update @palabras1 set palabra = null where nro = @i
break
END
set @i = @i + 1
END
set @i = 2
while (@i <= @cant2)
BEGIN
IF (@i = 2 AND (select palabra from @palabras2 where nro = 1) = 'CALLE')
BEGIN
set @i = @i + 1
CONTINUE
END
IF (@i = 3 AND (select palabra from @palabras2 where nro = 1) = 'CALLE'
AND (select palabra from @palabras2 where nro = 2) in ('N', 'NRO', 'NRO.','N*','Nº'))
BEGIN
set @i = @i + 1
CONTINUE
END
set @pal = (select palabra from @palabras2 where nro = @i)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @pal = replace(@pal,',','')
set @pal = replace(@pal,'-','')
set @pal = replace(@pal,'.','')
set @Numero_2 = convert(int,@pal)
update @palabras2 set palabra = null where nro = @i
break
END
set @i = @i + 1
END
IF ((@Numero_1 IS NULL AND @Numero_2 IS NOT NULL) OR
(@Numero_2 IS NULL AND @Numero_1 IS NOT NULL) OR
(@Numero_1 != @Numero_2))
BEGIN
--select '0' as respuesta
return '0'
END
--select @Numero_1, @Numero_2
/*
PARA LOS CASOS DE CALLES QUE EL NOMBRE ES UN NRO.
*/
declare @Calle varchar(100) = null,
@Calle2 varchar(100) = NULL
IF ((select palabra from @palabras1 where nro = 1) = 'CALLE')
BEGIN
set @pal = (select palabra from @palabras1 where nro = 2)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle = @pal
END
else
BEGIN
if ((select palabra from @palabras1 where nro = 2) in ('N','NRO','NRO.','N*','Nº'))
begin
set @pal = (select palabra from @palabras1 where nro = 3)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle = @pal
END
end
END
END
set @pal = (select palabra from @palabras1 where nro = 1)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle = @pal
END
---
IF ((select palabra from @palabras2 where nro = 1) = 'CALLE')
BEGIN
set @pal = (select palabra from @palabras2 where nro = 2)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle2 = @pal
END
else
BEGIN
if ((select palabra from @palabras2 where nro = 2) in ('N','NRO','NRO.','N*','Nº'))
begin
set @pal = (select palabra from @palabras2 where nro = 3)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle2 = @pal
END
end
END
END
set @pal = (select palabra from @palabras2 where nro = 1)
IF ((select isnumeric(@pal)) = 1)
BEGIN
set @calle2 = @pal
END
IF (@Calle = @Calle2 AND @Numero_1 = @Numero_2)
BEGIN
--select '1' as respuesta
return '1'
END
----
declare @largas smallint = 0,
@Cortas smallint = 0
declare @pal1 varchar(100) = null,
@pal2 varchar(100) = null
set @i = 1
set @j = 1
while (@i <= @cant1)
begin
set @j = 1
while (@j <= @cant2)
begin
set @pal1 = (select palabra from @palabras1 where nro = @i)
set @pal2 = (select palabra from @palabras2 where nro = @j)
if (@pal1 = @pal2 and @pal1 != 'PISO' and @pal1 not like 'PISO:%' and @pal1 not like 'DPTO:%' and @pal1 not like 'DTO:%' )
begin
if (LEN(@pal1) > 3) begin set @Largas = @Largas + 1 end
else begin set @Cortas = @Cortas + 1 end
end
set @j = @j + 1
end
set @i = @i + 1
end
if (@Numero_1 is not null) set @cant1 = @cant1 - 1
if (@Numero_2 is not null) set @cant2 = @cant2 - 1
IF (@largas >= 1 OR @Cortas >= 3 OR (@largas + @Cortas) = @cant2 OR
(@largas + @Cortas) = @cant1)
begin
-- select '1' as respuesta
return '1'
end
--select '0' as respuesta
return '0'
END
GO
Depends On
No items found
Used By
23- dbo.actualizar_datos_con_padron1
- dbo.AUH_TITULARES_2_DOMICILIOS
- dbo.backend_obtener_domicilios
- dbo.OBRASSOCIALES_2_DOMICILIOS
- dbo.OS_ACTIVOS_2_DOMICILIOS
- dbo.sp_comparo_domicilios_universo_paso2
- dbo.sp_depurar_domicilios
- dbo.sp_obtener_domicilios
- dbo.sp_obtener_domicilios_2019
- dbo.sp_obtener_domicilios_afip
- dbo.sp_obtener_domicilios_afipAB
- dbo.sp_obtener_domicilios_al_08092020
- dbo.sp_obtener_domicilios_ant
- dbo.sp_obtener_domicilios_ant2020
- dbo.sp_obtener_domicilios2
- dbo.sp_procesos_cuit_cruce_domicilios
- dbo.TE_MOVISTAR_2_DOMICILIOS
- dbo.TE_PERSONAL_2_DOMICILIOS
- dbo.TE_TASA_2_DOMICILIOS
- dbo.TE_TELECOM_2_DOMICILIOS
- dbo.trulio_validacion_lote_prueba2
- dbo.Trulioo_Validacion
- dbo.Trulioo_Validacion_new