Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 02/08/2007, 11h22   #1
Membre du Club
 
Avatar de Mydriaze
 
Inscription : décembre 2006
Messages : 177
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 177
Points : 56
Points : 56
Par défaut Comment trouver la chaine la plus longue?

Bonjour à tous,

J'ai besoin de trouver le nom le plus long dans ma_table et je n'arrive pas à faire la requête...

Pourtant ça ne doit pas être très compliqué... Mais rien ne marche...

Je suppose qu'il faut utiliser greatest, mais il lui faut une liste en argument...

Moi, ce que je pensais faire c'est qqch comme

select greatest(nom) from ma_table;

mais que nénie...

Est-ce que qqn pourrait me débloquer s'il vous plait?

Merci d'avance
Mydriaze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 11h28   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Bonjour,

Ca doit plutôt être un truc du genre :
Code :
1
2
SELECT MAX(LENGTH(nom))
FROM ta_table
Pour obtenir la longueur maximale

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 11h39   #3
Membre du Club
 
Avatar de Mydriaze
 
Inscription : décembre 2006
Messages : 177
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 177
Points : 56
Points : 56
Merci ced pour ton aide

J'y avai pensé mais ça ne marche pas...

j'ai

ERROR 1305 (42000): FUNCTION ma_base.length does not exist
Mydriaze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 11h47   #4
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Autant pour moi , c'est la fonction CHAR_LENGTH qui doit marcher (à utiliser plusieurs SGBD, on y perd son SQL... )

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 11h51   #5
Membre du Club
 
Avatar de Mydriaze
 
Inscription : décembre 2006
Messages : 177
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 177
Points : 56
Points : 56
Nan c'est pareil...

mysql> select MAX (LENGTH (nom)) FROM ma_table;
ERROR 1305 (42000): FUNCTION ma_base.LENGTH does not exist

mysql> select GREATEST (LENGTH (nom)) FROM ma_table;
ERROR 1305 (42000): FUNCTION ma_base.LENGTH does not exist

mysql> select GREATEST (CHAR_LENGTH (nom)) FROM ma_table;
ERROR 1305 (42000): FUNCTION ma_base.CHAR_LENGTH does not exist

mysql> select MAX (CHAR_LENGTH (nom)) FROM ma_table;
ERROR 1305 (42000): FUNCTION ma_base.CHAR_LENGTH does not exist
Mydriaze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 11h57   #6
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
J'ai fait ça sur une de mes table et ça marche

Code :
1
2
3
4
5
6
 
SELECT MAX(LENGTH(lb_service)),lb_service
FROM SERVICE
GROUP BY lb_service
ORDER BY MAX(LENGTH(lb_service)) DESC
LIMIT 1;
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h00   #7
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Quelle version de MySQL ?

Dans la doc, je ne trouve rien qui indique que ces fonctions sont postérieures à une version donnée...
Quelle est le type de ta donnée ?

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h00   #8
Membre du Club
 
Inscription : mars 2005
Messages : 217
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : mars 2005
Messages : 217
Points : 54
Points : 54
Bizarre !!!
Tu es en quelle version de MySQL ?
Pour ma part,
Code :
1
2
SELECT max( char_length( nom ) )
FROM personne
fonctionne sans pb...
MySQL - 5.0.22
jejeman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h02   #9
Membre du Club
 
Inscription : mars 2005
Messages : 217
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : mars 2005
Messages : 217
Points : 54
Points : 54
Citation:
Envoyé par pop_up
J'ai fait ça sur une de mes table et ça marche

Code :
1
2
3
4
5
6
 
SELECT MAX(LENGTH(lb_service)),lb_service
FROM SERVICE
GROUP BY lb_service
ORDER BY MAX(LENGTH(lb_service)) DESC
LIMIT 1;
Attention extrait de la doc :
La fonction length retourne la taille de la chaîne str, mesurée en octets.. Un caractère multi-octets compte comme un seul caractère. Cela signifie que pour une chaîne contenant 5 caractères de 2 octets, LENGTH() retournera 10, alors que CHAR_LENGTH() retournera 5.
Dans ton cas, il vaut mieux utiliser char_length
jejeman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h07   #10
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 423
Points : 6 423
Ben vu que ni l'une ni l'autre de ces fonctions n'ont l'air de passer...
Quel est le type de la donnée et la version de MySQL ? Ca peut donner une piste...

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h12   #11
Membre du Club
 
Avatar de Mydriaze
 
Inscription : décembre 2006
Messages : 177
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 177
Points : 56
Points : 56
Merci Pop up pour ton aide !

Je ne comprends pas, ... J'ai toujours la même réponse....

Code :
1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT MAX (LENGTH (nom)),nom 
    -> FROM ma_table
    -> GROUP BY nom
    -> ORDER BY MAX(LENGTH(nom)) DESC
    -> LIMIT 1;
ERROR 1305 (42000): FUNCTION ma_base.LENGTH does NOT exist
mysql> SELECT MAX (CHAR_LENGTH (nom)),nom 
    -> FROM ma_table
    -> GROUP BY nom
    -> ORDER BY MAX(CHAR_LENGTH(nom)) DESC
    -> LIMIT 1;
ERROR 1305 (42000): FUNCTION ma_base.CHAR_LENGTH does NOT exist
pareil avec greatest...
Mydriaze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h14   #12
Membre éclairé
 
Avatar de jota5450
 
Jota Alves
Inscription : janvier 2006
Messages : 263
Détails du profil
Informations personnelles :
Nom : Jota Alves
Âge : 36

Informations forums :
Inscription : janvier 2006
Messages : 263
Points : 303
Points : 303
slt ....

1º greatest ser a comparer des valeurs....


Code :
1
2
3
4
5
 
 
SELECT nom 
FROM ta_table 
ORDER BY length(nom) DESC LIMIT 1;
jota5450 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h16   #13
Membre du Club
 
Avatar de Mydriaze
 
Inscription : décembre 2006
Messages : 177
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 177
Points : 56
Points : 56
Merci pour ton aide Jejeman!

la version est 5.0.27 et le type de nom est varchar(50)
Mydriaze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2007, 12h19   #14
Membre du Club
 
Avatar de Mydriaze
 
Inscription : décembre 2006
Messages : 177
Détails du profil
Informations personnelles :
Âge : 44
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2006
Messages : 177
Points : 56
Points : 56
MERCI BEAUCOUP JOTA5450 !!!!

ÇA PASSE!

Merci à tous!!
Mydriaze 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 04h15.


 
 
 
 
Partenaires

Hébergement Web