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 :roll:) mais en pur mysql :-k

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 ...)