Bonjour,
je crée un moteur de recherche avec la requete qui va bien et afin d'optimiser la requete (enfin je pense...), j'insere avec mon select, le code suivant dans une sp:

CREATE PROCEDURE dbo.sonnom @P1strCode as char(12)=''

AS

DECLARE

@strCodeDeb as char(12),
@strCodeFin as char(12)



SELECT @strCodeDeb = CASE WHEN ISNULL(@P2strCode,'') = '' THEN char(0) ELSE @P2strCode END ,
@strCodeFin = CASE WHEN ISNULL(@P2strCode,'') = '' THEN char(255) ELSE @P2strCode END


select ....
FROM .....
WHERE .....
CODE BETWEEN @strCodeDeb AND @strCodeFin
group by ....
order by 4 DESC,6 DESC ,3
GO

Le probleme est que lorsque lance ma procedure stockée en passant un blanc comme parametre (cad lorsque je veux ramener tous les codes ...) la requete ne me ramene pas les codes commencant par 'Z'.

Apres quelques tests,

select ascii('Z') ---> me renvoie 90 (normal)
select char(90) ---> me renvoie z (normal)

voici un resultat que je ne m'explique pas, si quelqu'un pouvait m'aider merci:

if char(90) between char(0) and char(255)
select '1'
else
select '2'

---> ceci me renvoie '2'

de meme que :

if 'Z' between char(0) and char(255)
select '1'
else
select '2'


alors que
if char(91) between char(0) and char(255)
select '1'
else
select '2'

ou

if char(89) between char(0) and char(255)
select '1'
else
select '2'

me renvoie '1'