Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2012, 12h01   #1
Membre du Club
 
Inscription : janvier 2005
Messages : 114
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 114
Points : 40
Points : 40
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 :
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.
HENRYC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 12h27   #2
Membre Expert
 
Inscription : août 2009
Messages : 779
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 779
Points : 1 098
Points : 1 098
Un problème de collation.

Essayez avec :
ORDER BY MonChamp COLLATE Latin1_General_BIN
Rei Ichido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 14h15   #3
Membre du Club
 
Inscription : janvier 2005
Messages : 114
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 114
Points : 40
Points : 40
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é.
HENRYC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2012, 16h25   #4
Membre du Club
 
Inscription : janvier 2005
Messages : 114
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 114
Points : 40
Points : 40
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.
HENRYC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2012, 13h47   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h53.


 
 
 
 
Partenaires

Hébergement Web