Aggiorna tutti i valori di una colonna in minuscolo


100

Diciamo che ho qualcosa di simile

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

Come posso aggiornare tutti i valori nella colonna "tag" a:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

usando MySQL?

Risposte:


243

3
Nota, questo non funziona correttamente quando il tuo database utilizza la corrispondenza senza distinzione tra maiuscole e minuscole.
EmeraldD.

Come funzionerà con gli indirizzi e-mail? Name@domain.com Cambierà @?
Björn C

2
UPDATE table_name SET tag = BINARY LOWER(tag)per la corrispondenza senza distinzione tra maiuscole e minuscole.
Enyby

2
@ BjörnC - superiore / inferiore cambia solo le lettere; tutti gli altri caratteri rimangono invariati.
ToolmakerSteve

@Rippo ottengo questo errore quando provo questa queryHINT: No function matches the given name and argument types. You might need to add explicit type casts.
Luna Lovegood

68

INFERIORE()

update table set tag = LOWER(tag)

Ottengo questo errore quando provo questa query SUGGERIMENTO: Nessuna funzione corrisponde al nome e ai tipi di argomento forniti. Potrebbe essere necessario aggiungere cast di tipo esplicito.
Luna Lovegood

4

Versione per la corrispondenza senza distinzione tra maiuscole e minuscole e inclusa una clausola "WHERE" se non si desidera aggiornare l'intera colonna:

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

La riga COLLATE lo farà funzionare se il tuo database utilizza la corrispondenza senza distinzione tra maiuscole e minuscole, come fa il mio.


Ottengo questo errore quando provo questa query SUGGERIMENTO: Nessuna funzione corrisponde al nome e ai tipi di argomento forniti. Potrebbe essere necessario aggiungere cast di tipo esplicito.
Luna Lovegood

3

Prova questo:

update `table` set `column_name` = LOWER(column_name without quotation)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.