[Racine des codes] [Page précédente]

MS-SQL - fonction filtre

/SQL/MS-SQL - fonction filtre.sql
/* ex : chaine "6 bis" -> "6" */
-------------------------------------------------------------------------------
select lot_numero, convert(int, dbo.fn_Filtre(lot_numero, '%[a-z.&#]%') )
from lot order by 2

-- fonction :
DROP FUNCTION fn_Filtre
go

CREATE FUNCTION fn_Filtre(@Valeur VARCHAR(255), @Filtre Varchar(255))
returns varchar(255)
AS
BEGIN
  DECLARE @byte integer
  DECLARE @strTemp varchar(255)

  SELECT @strTemp = @Valeur
  SELECT @byte = patindex(@Filtre, @strTemp)
  WHILE @byte > 0
  BEGIN
    SELECT @strTemp = substring(@strTemp, 1, @byte-1) + substring(@strTemp, @byte+1, len(@strTemp)-@byte)
    SELECT @byte = patindex(@Filtre, @strTemp)
  END
  return(@strTemp)
END --FUNCTION
go
[edit]