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?

Odpowiedzi:


243

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)

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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.