重命名表中的所有列,删除空格。

9

我有一个表格,它是从一个非常大的CSV文件中导入的,其中包含100多个列。我刚刚注意到它们的列名中有空格。

是否有一种方法可以重命名所有列并删除空格?

2个回答

10
以下查询将从数据库 your_database 中的表格 your_table 的列名中删除所有包含任何空格的空格。您可以用您需要的值来替换它。
SELECT
    CONCAT(
           'ALTER TABLE ', C.TABLE_NAME, ' CHANGE `', 
           C.COLUMN_NAME, '` `', REPLACE(C.COLUMN_NAME, ' ', ''), '` ',
           C.DATA_TYPE, ';'
          )
FROM
    INFORMATION_SCHEMA.COLUMNS C
WHERE
    TABLE_SCHEMA = 'your_database' AND TABLE_NAME = 'your_table'
    AND C.COLUMN_NAME LIKE '% %';

非常注意反引号,这些反引号包围列名(包括新列名)。这将输出一组类似以下内容的ALTER TABLE语句:

Pay very close attention to the backticks which surround the column name (including the new column name). This will output a set of ALTER TABLE statements which look like the following:


ALTER TABLE your_table CHANGE `Old Column Name` `OldColumnName` VARCHAR;

太棒了!我需要改变的唯一一件事就是将varchar大小设置为:varchar(1024)。 - hugonbg

-1

尝试使用这个系统过程:

EXEC sp_RENAME 'TableName.OldName' , 'NewName', 'COLUMN'

抱歉,让我明确一下,假设我有一个名为“Order ID”的列,我想将其改为“OrderID”。 - Mrk Fldig
EXEC sp_RENAME 'TableName.Order ID' , 'OrderID', 'COLUMN' - Thanos Markou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接