我很难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 NULL
, CHARACTER 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 "% %" ;