IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

probleme avec le caractere 'Z' dans ma clause WHERE


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 19
    Points
    19
    Par défaut probleme avec le caractere 'Z' dans ma clause WHERE
    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'

  2. #2
    Membre à l'essai

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    suite a mon precedent message je continue de faire des tests pour contourner le probleme, mais aucune solution ne vient...
    Si quelqu'un a de meilleures illuminations que les miennes, merci pour votre aide.

  3. #3
    Membre à l'essai

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Rebonjour,
    si ca interesse quelqu'un voici une solution a mon probleme :

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

    Merci a ceux qui ont essayé de trouver une solution
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/03/2010, 20h49
  2. Problème avec des caractères spéciaux dans une chaine
    Par thibaut06 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/11/2006, 16h46
  3. Réponses: 3
    Dernier message: 18/09/2006, 20h55
  4. Problème avec les caractères accentues
    Par newnew dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 15/10/2004, 13h58
  5. Réponses: 12
    Dernier message: 30/07/2004, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo