Voici une petite fonction qui permet de vérifier la présence d’un caractère qui n’est pas supporté par la norme ASCII dans une chaîne de caractères …
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | --------------------------------- -- Nicolas SOUQUET - 17/07/2009 - --------------------------------- CREATE FUNCTION Fn_CheckUnicode (@chaine NVARCHAR(MAX)) RETURNS BIT WITH SCHEMABINDING AS BEGIN DECLARE @i INT, @lgr INT, @caractere NCHAR(1), @contientCaractereUnicode BIT SELECT @i = 1, @lgr = LEN(@chaine), @contientCaractereUnicode = 0 WHILE @i <= @lgr AND @contientCaractereUnicode = 0 BEGIN SELECT @caractere = SUBSTRING(@chaine, @i, 1) IF ASCII(@caractere) <> UNICODE(@caractere) BEGIN SET @contientCaractereUnicode = 1 END SET @i = @i + 1 END RETURN @contientCaractereUnicode END |
Et un exemple d’utilisation :
1 2 3 4 | --------------------------------- -- Nicolas SOUQUET - 17/07/2009 - --------------------------------- SELECT dbo.Fn_CheckUnicode(N'toto') |
retourne 0
1 2 3 4 | --------------------------------- -- Nicolas SOUQUET - 17/07/2009 - --------------------------------- SELECT dbo.Fn_CheckUnicode(N'สtวัoสtดีo') |
retourne 1.