MySQL tri alphabétique foireux
Résolu/Fermé
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
-
12 janv. 2010 à 17:19
le_boss Messages postés 168 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 29 octobre 2011 - 13 janv. 2010 à 14:36
le_boss Messages postés 168 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 29 octobre 2011 - 13 janv. 2010 à 14:36
A voir également:
- MySQL tri alphabétique foireux
- Comment trier par ordre alphabétique sur excel - Guide
- Mysql community server - Télécharger - Bases de données
- Logiciel tri photo gratuit - Guide
- Classer les applications par ordre alphabétique iphone - Guide
- Liste amis facebook ordre alphabétique - Forum Facebook
9 réponses
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
19
13 janv. 2010 à 14:36
13 janv. 2010 à 14:36
Bon, j'ai utilisé la solution du dernier recours... et ça marche...
Pareil pour les "«", je les ai remplacés par des "\"" et ça marche très bien maintenant.
Merci pour ton aide fiu.
Pareil pour les "«", je les ai remplacés par des "\"" et ça marche très bien maintenant.
Merci pour ton aide fiu.
ça doit être parce que la "a " (a espace) se situe avant le aa.
Par contre je ne vois pas comment faire
Par contre je ne vois pas comment faire
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
19
12 janv. 2010 à 17:24
12 janv. 2010 à 17:24
y a pas l'ombre d'un doute :-D
merci de le préciser tout de même...
merci de le préciser tout de même...
Salut
si tu veux que ce soit trié sans les espaces, il faut demander à trier sans les espaces.
si MySQL le supporte, essaie
SELECT * FROM tutu ORDER BY REPLACE(tata, ' ', '')
si ça marche pas (normalement, on ne trie que sur une colonne présente dans les données en sortie) essaie alors
SELECT *, REPLACE(tata, ' ', '') FROM tutu ORDER BY REPLACE(tata, ' ', '')
si tu veux que ce soit trié sans les espaces, il faut demander à trier sans les espaces.
si MySQL le supporte, essaie
SELECT * FROM tutu ORDER BY REPLACE(tata, ' ', '')
si ça marche pas (normalement, on ne trie que sur une colonne présente dans les données en sortie) essaie alors
SELECT *, REPLACE(tata, ' ', '') FROM tutu ORDER BY REPLACE(tata, ' ', '')
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
19
12 janv. 2010 à 19:40
12 janv. 2010 à 19:40
T'es un chef ! Apparemment, MySQL supporte ta première suggestion.
Merci !
Si je peux encore profiter un peu de ton savoir... pendant que tu es là:
Comment je peux faire pour qu'en plus, il ignore les "«" placés au début de certains enregistrements ?
J'ai essayé ces deux variantes, sans succès:
SELECT * FROM tutu ORDER BY REPLACE(tata, ' ', ''), REPLACE(tata, '«', '')
SELECT * FROM tutu ORDER BY REPLACE(tata, ' ', ''), REPLACE(tata, 'chr(174)', '')
Merci !
Si je peux encore profiter un peu de ton savoir... pendant que tu es là:
Comment je peux faire pour qu'en plus, il ignore les "«" placés au début de certains enregistrements ?
J'ai essayé ces deux variantes, sans succès:
SELECT * FROM tutu ORDER BY REPLACE(tata, ' ', ''), REPLACE(tata, '«', '')
SELECT * FROM tutu ORDER BY REPLACE(tata, ' ', ''), REPLACE(tata, 'chr(174)', '')
tssss
C'est pas deux expressions qu'il faut donner
1: REPLACE(tata, ' ', '')
2: REPLACE(tata, '«', '')
mais une seule: REPLACE(REPLACE(tata, '«', ''), ' ', '')
C'est pas deux expressions qu'il faut donner
1: REPLACE(tata, ' ', '')
2: REPLACE(tata, '«', '')
mais une seule: REPLACE(REPLACE(tata, '«', ''), ' ', '')
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
19
12 janv. 2010 à 21:00
12 janv. 2010 à 21:00
Alors désolé, mais avec ce code, seuls les espaces sont enlevés.
cool
si les espaces sont enlevés, c'est que REPLACE(tata, '«', '') ne provoque pas d'erreur !
pour te convaincre que ce REPLACE fonctionne bien, remplace donc '«' par 'a'
et comme c'est toi qui as donné «, je te laisse chercher comment l'indiquer dans le REPLACE.
si les espaces sont enlevés, c'est que REPLACE(tata, '«', '') ne provoque pas d'erreur !
pour te convaincre que ce REPLACE fonctionne bien, remplace donc '«' par 'a'
et comme c'est toi qui as donné «, je te laisse chercher comment l'indiquer dans le REPLACE.
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
19
12 janv. 2010 à 21:53
12 janv. 2010 à 21:53
Désolé, c'est moi me suis planté lamentablement avant. En fait, la requête ne contenait pas de champs avec un "«". J'ai essayé en mettant une lettre quelconque et en effet ça fonctionne. Maintenant, si j'essaie avec l'apostrophe (cette fois la requête en contient), ça me les enlève pas quand même. C'est curieux. Je rame, là.
en fait, si tu veux savoir si tu exprimes correctement tes chaines de caractères, fais donc un
select tata from tutu where tata like '%«%'
ou si je m'en tiens à ce que tu avais écrit
select tata from tutu where tata like '%||chr(174)||'%'
modifie ensuite cette requête pour essayer de chercher les tata contenant une apostrophe.
lorsque tu auras trouvé la bonne syntaxe pour exprimer une apostrophe, tu pourras alors t'en servir dans n'importe quelle fonction dont le REPLACE
select tata from tutu where tata like '%«%'
ou si je m'en tiens à ce que tu avais écrit
select tata from tutu where tata like '%||chr(174)||'%'
modifie ensuite cette requête pour essayer de chercher les tata contenant une apostrophe.
lorsque tu auras trouvé la bonne syntaxe pour exprimer une apostrophe, tu pourras alors t'en servir dans n'importe quelle fonction dont le REPLACE
le_boss
Messages postés
168
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
29 octobre 2011
19
13 janv. 2010 à 13:11
13 janv. 2010 à 13:11
Bon alors voilà ce qui se passe:
Dans ma BDD ce ne sont en fait pas des apostrophes chr(39), mais un autre caractère qui y ressemble, le chr(146) apparemment.
Lorsque je fais:
SELECT * FROM tutu WHERE tata LIKE('%’%') => c'est à dire recherche du chr(146): aucun résultat, alors que ma BDD en est remplie.
J'ai donc essayé de modifier un des enregistrements et de mettre une vraie apostrophe à la place du chr(146) et de faire une recherche sur les apostrophes, et là il me trouve l'enregistrement que je viens de modifier.
Si tu as une idée pourquoi l'un marche et pas l'autre, je suis preneur...
Ma solution de dernier recours sera de faire un export de ma table, de l'ouvrir dans un éditeur de texte et de remplacer tous les chr(146) par des vraies apostrophes précédées d'un backslash pour les échapper.
Dans ma BDD ce ne sont en fait pas des apostrophes chr(39), mais un autre caractère qui y ressemble, le chr(146) apparemment.
Lorsque je fais:
SELECT * FROM tutu WHERE tata LIKE('%’%') => c'est à dire recherche du chr(146): aucun résultat, alors que ma BDD en est remplie.
J'ai donc essayé de modifier un des enregistrements et de mettre une vraie apostrophe à la place du chr(146) et de faire une recherche sur les apostrophes, et là il me trouve l'enregistrement que je viens de modifier.
Si tu as une idée pourquoi l'un marche et pas l'autre, je suis preneur...
Ma solution de dernier recours sera de faire un export de ma table, de l'ouvrir dans un éditeur de texte et de remplacer tous les chr(146) par des vraies apostrophes précédées d'un backslash pour les échapper.