dbo.Eliminar_omitidos

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'
declare @nombre varchar(500) = 'banco de galicia'

select dbo.Eliminar_omitidos  (@nombre)
delete from omitidos where omi1 =' DE '
select * from sinonimos

*/

CREATE OR ALTER FUNCTION dbo.Eliminar_omitidos
(
@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
  
        
 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