recherche d'un nombre exact de caractéres dans une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : recherche d'un nombre exact de caractéres dans une chaine

par sharep98 » 30 mars 2007, 12:55

Une précision toutefois : LENGTH() renvoie le nombre d'OCTETS occupés par une chaîne. Ce nombre dépend du jeu de caractères utilisé (latin1, utf8, etc). Pour connaître le nombre de caractères, il faut utiliser CHAR_LENGTH().

Exemple :

Code : Tout sélectionner

CREATE TABLE t1 (name char(10) character set utf8)) INSERT INTO t1 VALUES('àùèë'); SELECT name, LENGTH(name), CHAR_LENGTH(name) FROM t1; +------+--------------+-------------------+ | name | LENGTH(name) | CHAR_LENGTH(name) | +------+--------------+-------------------+ | àùèë | 11 | 4 | +------+--------------+-------------------+ 1 row in set (0.00 sec)

par Hubert Roksor » 30 mars 2007, 09:19

Au fait, à tout hasard j'ai essayé de le formuler différemment pour voir si c'était plus rapide, et la réponse est non (c'est identique), il n'y a probablement pas de façon plus efficace de le faire. (à part bien sûr en changeant le type de données en nombre, etc...) Je vous laisse ma solution "alternative" pour la postérité.

Code : Tout sélectionner

SELECT * FROM matable WHERE mon_champ LIKE '_____'

par martial » 29 mars 2007, 16:24

Mille Gracié....ça marche!

par Ryle » 29 mars 2007, 15:33

Pour connaitre la longueur d'une donnée en base, il te suffit d'utiliser la fonction LENGTH() de SQL :)

http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html

Il ne reste donc plus qu'à utiliser cette fonction dans la clause WHERE de ta requête en spécifiant le champ et la taille souhaitée :)

Code : Tout sélectionner

... WHERE LENGTH(mon_champ) = 5

recherche d'un nombre exact de caractéres dans une chaine

par martial » 29 mars 2007, 15:13

Bonjour à tous
Aprés avoir recherché en vain dans le forum, je souhaiterais que quelqu'un m'aide à formuler la requête Mysql suivante:

Je souhaite extraire d'un champ d'une table tous ceux qui contiennent exactement 5 caractéres !
ex: colis N° 12345
colis N° 22AB3
colis N° RRT77
Merci pour votre aide!!