dbo.Eliminar_omitidos_sinonimos

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