有沒有什麼辦法可以改變我的列名的情況。我需要這樣做,因爲我有幾個表,其中一些列名全部以大寫形式存在,而其中一些列名全部以小寫形式存在,或者表中有大小寫字母列名的組合。有沒有什麼辦法可以改變mysql中所有表的列名大小寫的情況下
任何輸入將是一個很大的幫助。
感謝, 瑪納斯
有沒有什麼辦法可以改變我的列名的情況。我需要這樣做,因爲我有幾個表,其中一些列名全部以大寫形式存在,而其中一些列名全部以小寫形式存在,或者表中有大小寫字母列名的組合。有沒有什麼辦法可以改變mysql中所有表的列名大小寫的情況下
任何輸入將是一個很大的幫助。
感謝, 瑪納斯
您可以使用ALTER TABLE
重命名錶,從information_schema.columns
選擇讓列與哪個命名方案,你不想要的。將那些動態SQL(您可以使用PREPARE
用於此目的)或腳本生成並執行SQL語句。但是,SQL通常不區分大小寫,所以這些更改將是美觀的。
未經測試的例子來生成列重命名查詢(生成的查詢可能會下降屬性欄):
-- before use:
-- * change regexp to match columns to rename
-- * change collation to match table/column default
SELECT CONCAT('ALTER TABLE `', table_schema, '`.`', table_name,
'` CHANGE `', column_name, '` `', LOWER(column_name), '` ', column_type,
IF(IS_NULLABLE='NO',' NOT NULL',''),
IF(column_default <> '', CONCAT(' DEFAULT ', column_default), ''),
' ', extra)
FROM information_schema.columns
WHERE column_name REGEXP '^[A-Z]' COLLATE utf8_bin
AND table_schema <> 'information_schema';
-- or:
SELECT CONCAT('ALTER TABLE `', table_schema, '`.`', table_name,
'` CHANGE `', column_name, '` `', LOWER(column_name), '` ', column_type,
IF(IS_NULLABLE='NO',' NOT NULL',''),
IF(column_default <> '', CONCAT(' DEFAULT ', column_default), ''),
' ', extra)
FROM information_schema.columns
WHERE LEFT(column_name, 1) = UPPER(LEFT(column_name,1)) COLLATE utf8_bin
AND table_schema != 'information_schema';
是的你是對的。我只是希望列以適當的方式存儲並以標準方式存儲。 – 2011-03-09 05:24:05
你爲什麼要這麼做? SQL查詢中的列名不會有任何影響。 – Garbage 2011-03-09 05:11:55
對MySQL的+1不區分大小寫。 – philwinkle 2011-03-09 06:22:16