开发者

How do I change the case on every field in a mysql table in one call?

开发者 https://www.devze.com 2023-03-11 08:18 出处:网络
I have a table with 27 varchar fields. I want to make all fields lowercase, but i want to do it in one short mysql call.

I have a table with 27 varchar fields. I want to make all fields lowercase, but i want to do it in one short mysql call.

This does a single field:

UPDATE table
SET field = LOWER(field)

How do I d开发者_如何学Pythono the equivalent of this (which doesn't work):

UPDATE table
SET * = LOWER(*)


You can't do it with your creative attempt SET * = LOWER(*) etc.

You can however do it like this:

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

The reason there's no "shortcut" is probably because this pattern is so infrequently needed.


The consensus is that this cannot be done in a single mysql query.

Here is a super quick PHP script that does this for N fields (thanks for the idea @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);
}
0

精彩评论

暂无评论...
验证码 换一张
取 消