Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Null on Null Input | False |
| Schema Bound | False |
| Assembly |
Parameters
2| Name | Data Type | Length | Description |
|---|---|---|---|
| (Result) | varchar | 500 | |
| @razon_social | varchar | 500 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
declare @nombre varchar(500) = 'AGROPLANTA S R L'
select dbo.Eliminar_omitidos_sinonimos (@nombre)
*/
CREATE OR ALTER FUNCTION dbo.Eliminar_omitidos_sinonimos
(
@razon_social varchar(500)
)
RETURNS varchar(500)
AS
BEGIN
while @razon_social like '% %'
begin
set @razon_social = replace (@razon_social, ' ', ' ')
end
declare @razon_social2 varchar(500) = @razon_social
declare @omi1 varchar(50),
@omi2 varchar(50),
@omi3 varchar(50),
@omi4 varchar(50),
@omi5 varchar(50),
@omi6 varchar(50),
@omi7 varchar(50),
@omi8 varchar(50),
@omi9 varchar(50),
@omi10 varchar(50),
@valor varchar(500),
@valor1 varchar(500),
@id int
declare @palabras table (valor varchar(50))
DECLARE Palabras CURSOR FOR
select omi1, omi2, omi3, omi4, omi5, omi6, omi7, omi8, omi9, omi10 from omitidos
union
select sin1, sin2, sin3, sin4, sin5, sin6, sin7, sin8, sin9, sin10 from sinonimos
set @razon_social = '<<<<<' + @razon_social + '>>>>>'
Open Palabras
Fetch next from Palabras into @omi1,
@omi2,
@omi3,
@omi4,
@omi5,
@omi6,
@omi7,
@omi8,
@omi9,
@omi10
WHILE @@FETCH_STATUS = 0
BEGIN
if (ISNULL(ltrim(rtrim(@omi1)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi1)))
if (ISNULL(ltrim(rtrim(@omi2)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi2)))
if (ISNULL(ltrim(rtrim(@omi3)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi3)))
if (ISNULL(ltrim(rtrim(@omi4)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi4)))
if (ISNULL(ltrim(rtrim(@omi5)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi5)))
if (ISNULL(ltrim(rtrim(@omi6)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi6)))
if (ISNULL(ltrim(rtrim(@omi7)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi7)))
if (ISNULL(ltrim(rtrim(@omi8)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi8)))
if (ISNULL(ltrim(rtrim(@omi9)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi9)))
if (ISNULL(ltrim(rtrim(@omi10)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi10)))
Fetch next from Palabras into @omi1,
@omi2,
@omi3,
@omi4,
@omi5,
@omi6,
@omi7,
@omi8,
@omi9,
@omi10
END
CLOSE Palabras
DEALLOCATE Palabras
--select * from @palabras
DECLARE Palabras2 CURSOR FOR
select valor from @palabras
OPEN Palabras2
Fetch next from Palabras2 into @valor1
WHILE @@FETCH_STATUS = 0
BEGIN
if (ISNULL(ltrim(rtrim(@valor1)),'') != '')
begin
set @valor = '<<<<<' + @valor1 + ' '
set @razon_social = replace(@razon_social,@valor,'<<<<<')
set @valor = ' ' + @valor1 + '>>>>>'
set @razon_social = replace(@razon_social,@valor,'>>>>>')
set @valor = ' ' + @valor1 + ' '
set @razon_social = replace(@razon_social,@valor,' ')
end
Fetch next from Palabras2 into @valor1
END
CLOSE Palabras2
DEALLOCATE Palabras2
set @razon_social = replace(@razon_social,'<<<<<','')
set @razon_social = replace(@razon_social,'>>>>>','')
set @razon_social = LTRIM(rtrim(@razon_social))
-- si termina con solo una letra elimina esa letra del final
DECLARE @ultimo_espacio int = 0
set @ultimo_espacio = LEN(@razon_social) - CHARINDEX(' ',REVERSE(@razon_social)) + 1
if (@ultimo_espacio = LEN(@razon_social) - 1)
set @razon_social = SUBSTRING(@razon_social, 1, @ultimo_espacio-1)
set @razon_social2 = @razon_social
return @razon_social2
END
GO
GO
/*
declare @nombre varchar(500) = 'AGROPLANTA S R L'
select dbo.Eliminar_omitidos_sinonimos (@nombre)
*/
CREATE OR ALTER FUNCTION dbo.Eliminar_omitidos_sinonimos
(
@razon_social varchar(500)
)
RETURNS varchar(500)
AS
BEGIN
while @razon_social like '% %'
begin
set @razon_social = replace (@razon_social, ' ', ' ')
end
declare @razon_social2 varchar(500) = @razon_social
declare @omi1 varchar(50),
@omi2 varchar(50),
@omi3 varchar(50),
@omi4 varchar(50),
@omi5 varchar(50),
@omi6 varchar(50),
@omi7 varchar(50),
@omi8 varchar(50),
@omi9 varchar(50),
@omi10 varchar(50),
@valor varchar(500),
@valor1 varchar(500),
@id int
declare @palabras table (valor varchar(50))
DECLARE Palabras CURSOR FOR
select omi1, omi2, omi3, omi4, omi5, omi6, omi7, omi8, omi9, omi10 from omitidos
union
select sin1, sin2, sin3, sin4, sin5, sin6, sin7, sin8, sin9, sin10 from sinonimos
set @razon_social = '<<<<<' + @razon_social + '>>>>>'
Open Palabras
Fetch next from Palabras into @omi1,
@omi2,
@omi3,
@omi4,
@omi5,
@omi6,
@omi7,
@omi8,
@omi9,
@omi10
WHILE @@FETCH_STATUS = 0
BEGIN
if (ISNULL(ltrim(rtrim(@omi1)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi1)))
if (ISNULL(ltrim(rtrim(@omi2)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi2)))
if (ISNULL(ltrim(rtrim(@omi3)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi3)))
if (ISNULL(ltrim(rtrim(@omi4)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi4)))
if (ISNULL(ltrim(rtrim(@omi5)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi5)))
if (ISNULL(ltrim(rtrim(@omi6)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi6)))
if (ISNULL(ltrim(rtrim(@omi7)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi7)))
if (ISNULL(ltrim(rtrim(@omi8)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi8)))
if (ISNULL(ltrim(rtrim(@omi9)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi9)))
if (ISNULL(ltrim(rtrim(@omi10)),'') != '') INSERT INTO @palabras values (ltrim(rtrim(@omi10)))
Fetch next from Palabras into @omi1,
@omi2,
@omi3,
@omi4,
@omi5,
@omi6,
@omi7,
@omi8,
@omi9,
@omi10
END
CLOSE Palabras
DEALLOCATE Palabras
--select * from @palabras
DECLARE Palabras2 CURSOR FOR
select valor from @palabras
OPEN Palabras2
Fetch next from Palabras2 into @valor1
WHILE @@FETCH_STATUS = 0
BEGIN
if (ISNULL(ltrim(rtrim(@valor1)),'') != '')
begin
set @valor = '<<<<<' + @valor1 + ' '
set @razon_social = replace(@razon_social,@valor,'<<<<<')
set @valor = ' ' + @valor1 + '>>>>>'
set @razon_social = replace(@razon_social,@valor,'>>>>>')
set @valor = ' ' + @valor1 + ' '
set @razon_social = replace(@razon_social,@valor,' ')
end
Fetch next from Palabras2 into @valor1
END
CLOSE Palabras2
DEALLOCATE Palabras2
set @razon_social = replace(@razon_social,'<<<<<','')
set @razon_social = replace(@razon_social,'>>>>>','')
set @razon_social = LTRIM(rtrim(@razon_social))
-- si termina con solo una letra elimina esa letra del final
DECLARE @ultimo_espacio int = 0
set @ultimo_espacio = LEN(@razon_social) - CHARINDEX(' ',REVERSE(@razon_social)) + 1
if (@ultimo_espacio = LEN(@razon_social) - 1)
set @razon_social = SUBSTRING(@razon_social, 1, @ultimo_espacio-1)
set @razon_social2 = @razon_social
return @razon_social2
END
GO