Оновіть усі значення стовпця до нижчих регістрів


100

Скажемо, у мене є щось подібне

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

Як я можу оновити всі значення у стовпці "тег" до:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

використовуючи MySQL?

Відповіді:


243

Дивіться http://dev.mysql.com/doc/refman/5.0/uk/string-functions.html#function_lower

UPDATE table_name SET tag = LOWER(tag)

3
Зауважте, це не працює належним чином, коли у вашій базі даних використовується збіг, що не враховує регістр.
СмарагдD.

Як це буде працювати з адресами електронної пошти? 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.
Luna

68

НИЗЬКО ()

update table set tag = LOWER(tag)

Я отримую цю помилку, коли я пробую цей запит Підказка: жодна функція не відповідає вказаному типу імені та аргументу. Можливо, вам доведеться додати відвертий тип лиття.
Luna

4

Версія для невідповідності регістру і включення пункту "WHERE", якщо ви не хочете оновлювати весь стовпець:

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

Рядок COLLATE змусить її працювати, якщо у вашій базі даних використовується збіг, що не залежить від регістрів, як це робиться у мене.


Я отримую цю помилку, коли я пробую цей запит Підказка: жодна функція не відповідає вказаному типу імені та аргументу. Можливо, вам доведеться додати відвертий тип лиття.
Luna

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.