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

Langage SQL Discussion :

Order by sur champ "text"


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 179
    Points : 83
    Points
    83
    Par défaut Order by sur champ "text"
    Bonjour,
    je travail sous sqlserver 2000, et j'ai du mal à trouver la bonne requéte pour ce que je veux faire:
    J'ai une table avec un champ "Article" de type "text", et les valeurs sont de la forme suivante: "Article numero 1", "Article numero 2", etc...
    et je veux les trier par order decroissant, je fait donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Articles order by Article desc
    Mais le problème commence quand le numéro de l'article dépasse 99, à partir de là "Article numero 101" par exemple devient inférieur à "Article numero 2", ou "Article numero 3" ....
    Et c'est tout à fait normale, vu que les numéro dans ce cas sont considéré comme des chiffres.
    Quesque vous proposez , à part de changer le type ou la forme du champ article ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    Il faut extraire la valeur numérique du texte et la convertir en nombre avant de faire le tri sur la valeur obtenue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  * 
    FROM    Articles 
    ORDER BY CAST(SUBSTRING(Article FROM CHAR_LENGTH('Article numero ') + 1) AS INTEGER) DESC
    ;
    Faute d'information suffisante, je suppose qu'il n'y a rien après le numéro d'article dans la colonne Article

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 179
    Points : 83
    Points
    83
    Par défaut
    Efféctivement il n y'a rien aprés le numéro de l'article
    Mais aprés teste, j'ai malheureusement reçu le message d'erreur suivant :
    Syntaxe incorrecte vers le mot clé 'FROM'.
    Merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 437
    Points
    28 437
    Par défaut
    J'ai utilisé la syntaxe normalisée des instructions SQL.
    Il suffit d'utiliser les fonctions spécifiques à SQL Server...

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    J'ai eu le même problème avec SQL Server et "CHAR_LENGTH".

    J'ai donc essayé "LENGTH", "CHARACTER_LENGTH" et "DATALENGTH". Sauf que pour ce dernier, cela me renvoit la taille définie pour la colonne concernée ! (De plus ce n'est pas normalisé !)

    Donc si tu trouve mouchkar, je suis preneur

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 179
    Points : 83
    Points
    83
    Par défaut
    Pour le "CHAR_LENGTH" essaie avec "LEN"
    Par contre moi je trouve tjrs pas la bonne syntaxe pour mon problème

  7. #7
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Merci mouchkar,

    Des fois c'est tellement idiot qu'on y pense pas !

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 179
    Points : 83
    Points
    83
    Par défaut
    Au plaisir Chtulus ,
    Moi aussi je croix que j'ai réussi ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from Articles 
    ORDER BY CAST(SUBSTRING(Article,len(Article)-2,3) AS INTEGER) DESC
    Au cas où ça aidera quelqu'un
    Merci al1_24

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

Discussions similaires

  1. Problème de style CSS sur champ input text
    Par elekaj34 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 14/12/2011, 10h53
  2. ORDER BY sur du FULL TEXT
    Par Sindel dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/07/2010, 19h58

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