Mettre à jour toutes les valeurs d'une colonne en minuscules

100

Disons que j'ai quelque chose comme ça

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

Comment puis-je mettre à jour toutes les valeurs de la colonne "tag" pour:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

en utilisant MySQL?

Adam Ramadhan
la source

Réponses:

243

Voir http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lower

UPDATE table_name SET tag = LOWER(tag)
Rippo
la source
3
Notez que cela ne fonctionne pas correctement lorsque votre base de données utilise une correspondance insensible à la casse.
EmeraldD.
Comment cela fonctionnera-t-il avec les adresses e-mail? [email protected] Le @ changera-t-il?
Björn C
2
UPDATE table_name SET tag = BINARY LOWER(tag)pour une correspondance insensible à la casse.
Enyby le
2
@ BjörnC - majuscule / minuscule ne change que les lettres; tous les autres caractères sont inchangés.
ToolmakerSteve
@Rippo J'obtiens cette erreur lorsque j'essaye cette requêteHINT: No function matches the given name and argument types. You might need to add explicit type casts.
Luna Lovegood
68

INFÉRIEUR()

update table set tag = LOWER(tag)
Shakti Singh
la source
J'obtiens cette erreur lorsque j'essaie cette requête. CONSEIL: Aucune fonction ne correspond au nom et aux types d'argument donnés. Vous devrez peut-être ajouter des transtypages de types explicites.
Luna Lovegood
4

Version pour la correspondance insensible à la casse et incluant une clause "WHERE" si vous ne souhaitez pas mettre à jour la colonne entière:

UPDATE table 
SET tag = LOWER(tag)
WHERE LOWER(tag) != tag
COLLATE Latin1_General_CS_AS

La ligne COLLATE le fera fonctionner si votre base de données utilise une correspondance insensible à la casse, comme le fait la mienne.

Susie
la source
J'obtiens cette erreur lorsque j'essaie cette requête. CONSEIL: Aucune fonction ne correspond au nom et aux types d'argument donnés. Vous devrez peut-être ajouter des transtypages de types explicites.
Luna Lovegood
3

Essaye ça:

update `table` set `column_name` = LOWER(column_name without quotation)
Anjani Barnwal
la source