Page 1 sur 1
bonne syntaxe, tout ce qui commence par une majuscule
Posté : 09 mai 2012, 17:03
par Megadeth
Bonjour,
Je voulais savoir s'il existait une syntaxe particulière sous mysql pour dire à ma requête : sélectionne moi tout ce qui commence par une majuscule
SELECT champ1,champ2 WHERE champ2 commence par une majuscule comprise entre A et Z
Cordialement,
Mega

Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 09 mai 2012, 17:24
par Calimero
Bonjour,
Je voulais savoir s'il existait une syntaxe particulière sous mysql pour dire à ma requête : sélectionne moi tout ce qui commence par une majuscule
SELECT champ1,champ2 WHERE champ2 commence par une majuscule comprise entre A et Z
Cordialement,
Mega

Hello,
Pour une réponse précise il faudrait connaître le type de champ et l'interclassement

Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 09 mai 2012, 17:37
par Megadeth
Bonjour Calimero,
C'est un champ texte classique, tout en utf8.
En PHP j'ai ma p'tite idée (et encore

) mais en pur mysql
Mega
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 09 mai 2012, 17:39
par popy
cast ton champs en utf8_cs avant de faire ton like.
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 09 mai 2012, 17:51
par Calimero
Bonjour Calimero,
C'est un champ texte classique, tout en utf8.
Comme le signale popy ci-dessus, le comportement de LIKE, en particulier vis-à-vis de la casse, va varier suivant l'interclassement (certains sont case sensitive [CS], d'autre case insensitive [CI]). Tu nous donnes là le charset, mais pas l'interclassement
Tu dois pouvoir t'en sortir avec une batterie de LIKE "A%" OR LIKE "B%" OR ... et l'interclassement qui va bien, ou encore avec une regexp mysql.
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 09 mai 2012, 17:53
par nhachet
La clause REGEXP permet de faire ça :
SELECT * FROM table WHERE champ REGEXP "^[A-Z]*"
http://dev.mysql.com/doc/refman/5.0/fr/regexp.html
Edit : Après quelques recherches, bémol :
REGEXP is not case sensitive, except when used with binary strings.
Pour convertir une table de latin1 vers latin case sensitive (de même pour l'UTF8) :
ALTER TABLE <name> CONVERT TO CHARACTER SET latin1 COLLATE latin_general_cs
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 10 mai 2012, 09:15
par Mazarini
Peut être :
where SUBSTR(champ2,1,1) between 'A' and 'Z'
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 10 mai 2012, 09:49
par popy
WHERE champ COLLATE utf8_cs LIKE 'A%'
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 10 mai 2012, 11:06
par Megadeth
Bonjour,
MERCI à tous pour vos interventions respectives.
Ta syntaxe marche du tonnerre MAZA =D>
Mega

Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 10 mai 2012, 11:10
par albat
WHERE substring(champ,1,1) = upper(substring(champ,1,1))
Re: bonne syntaxe, tout ce qui commence par une majuscule
Posté : 10 mai 2012, 11:11
par albat
Ta syntaxe marche du tonnerre MAZA =D>
Sauf si ta valeur commence par :
- une lettre accentuée
- un chiffre
- un symbole (_ ou $ ou ...)