Обновить все значения столбца до нижнего регистра


100

Допустим, у меня есть что-то вроде этого

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

Как я могу обновить все значения в столбце «тег», чтобы:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

используя MySQL?

Ответы:


243

3
Обратите внимание: это не работает правильно, если в вашей базе данных используется сопоставление без учета регистра.
EmeraldD.

Как это будет работать с адресами электронной почты? Name@domain.com Изменится ли @?
Björn C

2
UPDATE table_name SET tag = BINARY LOWER(tag)для сопоставления без учета регистра.
Enyby

2
@ BjörnC - верхние / нижние меняют только буквы; все остальные символы без изменений.
ToolmakerSteve

@Rippo Я получаю эту ошибку, когда пытаюсь выполнить этот запросHINT: No function matches the given name and argument types. You might need to add explicit type casts.
Луна Лавгуд

68

НИЖНИЙ ()

update table set tag = LOWER(tag)

Я получаю эту ошибку, когда пытаюсь выполнить этот запрос. СОВЕТ: ни одна функция не соответствует заданному имени и типам аргументов. Возможно, вам потребуется добавить явное приведение типов.
Луна Лавгуд

4

Версия для сопоставления без учета регистра и включения предложения WHERE, если вы не хотите обновлять весь столбец:

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

Строка COLLATE заставит его работать, если ваша база данных использует сопоставление без учета регистра, как это делает моя.


Я получаю эту ошибку, когда пытаюсь выполнить этот запрос. СОВЕТ: ни одна функция не соответствует заданному имени и типам аргументов. Возможно, вам потребуется добавить явное приведение типов.
Луна Лавгуд

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.