[SQL Server] Vérifier la validité d'une chaine de caractère ou un une valeur numérique
-- =============================================
-- Author: Zouhaier KHARROUBI
-- Create date: 20/09/2017
-- Description: Vérifier la validité d'une chaine de caractère ou un une valeur numérique
-- La chaine de caractère doit contenir que des alphabet et/ou le cractère -
-- =============================================
CREATE FUNCTION [dbo].[ufs_ChaineValide]
(
@Chaine VARCHAR(500)
,@Type_Validité TINYINT --1=> Alphabitique, 2=> Numérique
)
RETURNS bit
AS
BEGIN
DECLARE @Retour AS BIT
,@Debut AS INT
,@Taille AS INT
,@Caractere AS CHAR(1)
,@NbreSeparateurDecimal AS INT
SELECT @Taille = LEN(@Chaine)
,@debut = 1
,@NbreSeparateurDecimal = 0
IF ISNULL(@Taille,0)=0
BEGIN
SELECT @Retour=0
END
ELSE
BEGIN
SELECT @Retour=1
END
WHILE @debut <=@taille
BEGIN
SELECT @Caractere = SUBSTRING(@Chaine,@Debut,1)
IF @Type_Validité = 1
BEGIN
IF (UPPER(@Caractere)>'Z' OR UPPER(@Caractere)<'A') AND @Caractere<>'-'
BEGIN
SELECT @Retour=0
,@Debut=@Taille + 1
END
END
IF @Type_Validité = 2
BEGIN
IF @Caractere='.'
BEGIN
SELECT @NbreSeparateurDecimal = @NbreSeparateurDecimal + 1
END
IF ((@Caractere>'9' OR @Caractere<'0') AND @Caractere<>'.') OR(@debut=@taille AND @Caractere='.') OR(@debut=1 AND @Caractere='.') OR @NbreSeparateurDecimal>1
BEGIN
SELECT @Retour=0
,@Debut=@Taille + 1
END
END
SELECT @Debut = @Debut + 1
END
RETURN @Retour
END