是否有任何build议更换MariaDB表和列表中的特定字符?

我很难replace“”。 我明白,MariaDB的SQL语法允许replace字符(通过string); 我已经试图这样做,但是它继续给我同样的错误,不识别语法的结构。

在旁注中,有没有人知道任何允许自动更改表的函数,触发器和/或模块,以及在创build表时创build/允许/允许更改名称的列?

(来自评论)

ALTER TABLE xover_sao MODIFY COLUMN 'Abell Object' 'xover_sao_object' VARCHAR(255); -: ALTER TABLE xover_sao MODIFY 'Abell Object' 'xover_sao_object' VARCHAR(255); -: ALTER TABLE xover_sao MODIFY 'Abell Object' REPLACE('Abell Object', ' ', '' ); -: ALTER TABLE xover_sao MODIFY 'Abell Object' REPLACE('Abell Object', ' ', '' ); 

MODIFY不允许更改名称。

col_name不允许有表达式。

所以,这是最接近可能的:

 ALTER TABLE xover_sao CHANGE COLUMN 'Abell Object' 'xover_sao_object' VARCHAR(255); 

但是一定要在定义中包含其他东西,比如NOT NULLCHARACTER SET等等。

不幸的是,语法不被识别,说明这是一个错误,并失败。

没有内置的语法用于替换列名中的字符,或者对列名使用任何类型的表达式,但是可以在information_schema上使用查询。 columns来生成有效的SQL脚本。

就像是…

 SELECT CONCAT("ALTER TABLE `", c.table_schema, "`.`", c.table_name, "` " , "CHANGE COLUMN `", c.column_name, "` " , "`", REPLACE(c.column_name, " ", "_"), "` " , -- [use information from c to reconstruct the exact definition here] , ";") AS sqlStmt FROM information_schema.columns AS c WHERE c.column_name LIKE "% %" ;