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 :

Des tris bizarres


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 242
    Par défaut Des tris bizarres
    Bonjour,

    Je travaille avec SQL-Server 2008.
    Lorsque je vais sur la console de SQL-Server et que je tape

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select MonChamp FROM Matable ORDER By MonChamp
    J'obtiens l'affichage

    000050
    000051
    000-05
    000-059
    000069

    Comment la donnée 000-05 peut elle etre à la fois supérieure à 000051 et inférieur à 000069
    Tout se passe comme s'il "ignorait" le caractère '-'

    Le champ en question de type char(20)

    Merci.

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Un problème de collation.

    Essayez avec :
    ORDER BY MonChamp COLLATE Latin1_General_BIN

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 242
    Par défaut Ca y est presque!
    Merci,

    Au niveau de la console ça marche !

    Maintenant au niveau de mon appli en Visual c#, lorsque j'envoie la même requete, ça ne marche pas.

    J'ai trouvé dans les propriétés de ma base de données, qu'on pouvait paramétrer le classement à Latin1_General_BIN.

    Dés que tous les utilisateurs sont partis, je fais une copie de ma base et j'essaie de changer cette propriété.

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 242
    Par défaut J'en suis pas sorti!!
    Bon finalement le mot cle COLLATE fonctionne bien pour afficher des données triées. Mais cela ne marche plus dés qu'on envoie des requetes de selection par comparaison de valeur ( Ou alors c'est une syntaxe du type usine à gaz)

    J'ai fini par comprendre tout le problème grace au tuto:

    http://sqlpro.developpez.com/cours/s...er/collations/

    On ne peut pas modifier le type de tri au niveau de la base de données complète. Une fois que le tri est choisi à la création de la base c'est fini !!
    Tant pis pour moi c'est trop tard.
    On peut par contre modifier le type de tri au niveau d'une table, j'ai essayé ça marche trés bien.

    Sauf que !!!!

    Il faut modifier le tri pour toutes les tables et toutes les vues, sinon SQL est incapable de faire un lien entre deux tables qui n'ont pas le même type de tri.
    C'est logique il ne posséde pas la même régle de test d'égalité pour les 2 tables.

    Il ne me reste plus qu'à recréer une base de données vide, choisir le bon type de tri dés le départ, recréer mes tables et y importer mes données !!!
    Encore un joyeux week-end de bloqué au boulot, pour un mauvais choix effectué au départ.

    Alors maintenant si quelqu'un a une petite idée pour me permettre d'automatiser un max ces opérations, notament la partie création des tables et des vues de données, j'ai environ 400 tables et vues à recréer !!

    Et se faire ça à la main, merci du cadeau!!

    Merci.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Plus exactement, dans chaque vue et chaque table, les colonnes sont créées avec un type de données et la collation fait partie intégrante du type de données. Si une table est créée avec une collation X et que la vue est créée avec cette même collation X, alors, la modification de la colonne dans la table par recréation de cette colonne avec par exemple une collation Y, n'affecte pas la vue qui conserve la collation X !

    C'est normal et logique, car il est parfaitement possible pour un site multilingue de définir autant de vue qu'il y a de langues, avec pour chaque vue une collation spécifique à la langue pour toutes les colonnes littérales !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. [Oracle10] DROP TABLE avec des caractères bizarres
    Par molgow dans le forum Oracle
    Réponses: 1
    Dernier message: 04/10/2006, 08h49
  2. [Language]De l'utilité des try/catch
    Par cyrill.gremaud dans le forum Langage
    Réponses: 17
    Dernier message: 22/11/2005, 14h10
  3. [10g] Le drop laisse des objets "bizarres"
    Par Oxygene dans le forum Oracle
    Réponses: 9
    Dernier message: 22/02/2005, 15h18
  4. Ordre des tris / fonction upper
    Par slylafone dans le forum Débuter
    Réponses: 7
    Dernier message: 18/01/2005, 17h53

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