bonne syntaxe, tout ce qui commence par une majuscule

Mammouth du PHP | 737 Messages

09 mai 2012, 17:03

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
;)
Dyslexics are teople poo

ViPHP
ViPHP | 2287 Messages

09 mai 2012, 17:24

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 :)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 737 Messages

09 mai 2012, 17:37

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
Dyslexics are teople poo

Eléphant du PHP | 275 Messages

09 mai 2012, 17:39

cast ton champs en utf8_cs avant de faire ton like.

ViPHP
ViPHP | 2287 Messages

09 mai 2012, 17:51

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.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 127 Messages

09 mai 2012, 17:53

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 

ViPHP
ViPHP | 2577 Messages

10 mai 2012, 09:15

Peut être :
where SUBSTR(champ2,1,1) between 'A' and 'Z'

Eléphant du PHP | 275 Messages

10 mai 2012, 09:49

WHERE champ COLLATE utf8_cs LIKE 'A%'

Mammouth du PHP | 737 Messages

10 mai 2012, 11:06

Bonjour,

MERCI à tous pour vos interventions respectives.

Ta syntaxe marche du tonnerre MAZA =D>

Mega
;)
Dyslexics are teople poo

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 mai 2012, 11:10

WHERE substring(champ,1,1) = upper(substring(champ,1,1))

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 mai 2012, 11:11

Ta syntaxe marche du tonnerre MAZA =D>
Sauf si ta valeur commence par :
- une lettre accentuée
- un chiffre
- un symbole (_ ou $ ou ...)