Zaktualizuj wszystkie wartości w kolumnie na małe litery

100

Powiedzmy, że mam coś takiego

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

Jak zaktualizować wszystkie wartości w kolumnie „tag”, aby:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

używając MySQL?

Adam Ramadhan
źródło

Odpowiedzi:

243

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

UPDATE table_name SET tag = LOWER(tag)
Rippo
źródło
3
Zwróć uwagę, że to nie działa poprawnie, gdy baza danych używa dopasowywania bez rozróżniania wielkości liter.
Emerald D.
Jak to zadziała z adresami e-mail? Imię@domena.com Czy @ się zmieni?
Björn C
2
UPDATE table_name SET tag = BINARY LOWER(tag)do dopasowywania bez rozróżniania wielkości liter.
Enyby
2
@ BjörnC - wielkie / małe zmienia tylko litery; wszystkie inne postacie pozostają niezmienione.
ToolmakerSteve
@Rippo Otrzymuję ten błąd, kiedy próbuję wykonać to zapytanieHINT: No function matches the given name and argument types. You might need to add explicit type casts.
Luna Lovegood
68

NIŻSZY()

update table set tag = LOWER(tag)
Shakti Singh
źródło
Otrzymuję ten błąd, gdy próbuję wykonać to zapytanie. WSKAZÓWKA: Żadna funkcja nie pasuje do podanej nazwy i typów argumentów. Może być konieczne dodanie wyraźnych rzutów typu.
Luna Lovegood
4

Wersja do dopasowywania bez rozróżniania wielkości liter i zawierająca klauzulę „WHERE”, jeśli nie chcesz aktualizować całej kolumny:

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

Linia COLLATE sprawi, że będzie działać, jeśli twoja baza danych używa dopasowywania bez rozróżniania wielkości liter, tak jak moja.

Susie
źródło
Otrzymuję ten błąd, gdy próbuję wykonać to zapytanie. WSKAZÓWKA: Żadna funkcja nie pasuje do podanej nazwy i typów argumentów. Może być konieczne dodanie wyraźnych rzutów typu.
Luna Lovegood
3

Spróbuj tego:

update `table` set `column_name` = LOWER(column_name without quotation)
Anjani Barnwal
źródło