Как изменить регистр для каждого поля в таблице MySQL за один вызов? - PullRequest
5 голосов
/ 08 июня 2011

У меня есть таблица с 27 полями varchar. Я хочу сделать все поля строчными, но я хочу сделать это за один короткий вызов MySQL.

Это делает одно поле:

UPDATE table
SET field = LOWER(field)

Как мне сделать эквивалент этого (который не работает):

UPDATE table
SET * = LOWER(*)

Ответы [ 2 ]

3 голосов
/ 08 июня 2011

Вы не можете сделать это с вашей творческой попыткой SET * = LOWER(*) и т. Д.

Однако вы можете сделать это так:

UPDATE table SET
column1 = LOWER(column1),
column2 = LOWER(column2),
 -- etc, listing all text type columns
columnN = LOWER(columnN);

Причина, по которой нет «ярлыка», возможно, в том, что этот шаблон так редко нужен.

0 голосов
/ 08 июня 2011

По общему мнению, это невозможно сделать в одном запросе mysql.

Вот супер быстрый PHP-скрипт, который делает это для N полей (спасибо за идею @alex):

$sql = "SHOW COLUMNS
        FROM table";
$results = mysqli_query($dbcon,$sql);
while($column = mysqli_fetch_assoc($results))
{
    $column = $column["Field"];
    $sql = "UPDATE table
            SET $column = LOWER($column)";
    $success = mysqli_query($dbcon,$sql);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...