简体   繁体   English

将mysql数据库中表的所有列更改为大写

[英]Alter all columns of a table in mysql database to upper case

DELIMITER // 
DROP PROCEDURE IF EXISTS uppercasecol // 

CREATE PROCEDURE uppercasecol(IN tblname VARCHAR(200)) 
BEGIN 
DECLARE done INT DEFAULT 0; 
DECLARE oldname VARCHAR(200); 
DECLARE cur CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA='ADM01' AND TABLE_NAME=tblname; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 
OPEN cur; 
REPEAT 
FETCH cur INTO oldname; 
SET @newname = UPPER(oldname); 
#IF newname equals to oldname, do nothing; 
#select 'a' <> 'A'; -> 0 
#select 'a' <> BINARY 'A'; -> 1 
SET @isNotSame = @newname <> BINARY oldname; 
IF NOT done && @isNotSame THEN 
SET @SQL = CONCAT('ALTER TABLE `',tblname,'` CHANGE COLUMN `',oldname,'` @newname'); 
PREPARE tmpstmt FROM @SQL; 
EXECUTE tmpstmt; 
DEALLOCATE PREPARE tmpstmt; 
END IF; 
UNTIL done END REPEAT; 
CLOSE cur; 
END // 
DELIMITER ;

CALL uppercasecol('USER_MODULE');

I am using the above code to convert the column names to upper case but the code is giving error 1604(42000) in CONCAT('ALTER TABLE ',tblname,' CHANGE COLUMN ',oldname,' @newname'). 我正在使用上面的代码将列名转换为大写,但是代码在CONCAT中给出了错误1604(42000)('ALTER TABLE ',tblname,' CHANGE COLUMN ',oldname,' @newname')。 Can anyone help me out in this... 谁能帮我这个忙...

thanx in advance 预先感谢

ALTER TABLE `tablename` CHANGE COLUMN `oldname` `newname` datatype(size) NOT NULL;

尝试这个

尝试这个

SET @SQL = CONCAT('ALTER TABLE `',@tblname,'` CHANGE COLUMN `',@oldname,'` @newname'); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM