Sql 对于替换MariaDB表和表列中的特定字符,是否有任何建议?

Sql 对于替换MariaDB表和表列中的特定字符,是否有任何建议?,sql,windows,mysqli,command-line-interface,mariadb,Sql,Windows,Mysqli,Command Line Interface,Mariadb,我在替换“”时遇到困难。我知道MariaDB的SQL语法允许替换字符(通过字符串);我已经尝试过这样做,但它继续给我同样的错误,不认识语法的结构 另一方面,是否有人知道在创建表时允许自动更改表以及允许/允许/允许更改名称的列的任何函数、触发器和/或模块 (来自评论) MODIFY不允许更改名称 列名称不允许使用表达式 因此,这是最接近可能的: ALTER TABLE xover_sao CHANGE COLUMN 'Abell Object' 'xover_sao_object' VAR

我在替换“”时遇到困难。我知道MariaDB的SQL语法允许替换字符(通过字符串);我已经尝试过这样做,但它继续给我同样的错误,不认识语法的结构

另一方面,是否有人知道在创建表时允许自动更改表以及允许/允许/允许更改名称的列的任何函数、触发器和/或模块

(来自评论)


MODIFY
不允许更改名称

列名称
不允许使用表达式

因此,这是最接近可能的:

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

但请确保在定义中包含任何其他内容,例如
非空
字符集
,等等。

修改
不允许更改名称

列名称
不允许使用表达式

因此,这是最接近可能的:

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

但请确保在定义中包含任何其他内容,例如
非空
字符集
,等等。

不幸的是,语法无法识别,说明它是错误,并且失败。

不幸的是,语法无法识别,说明它是错误,并且失败。

没有内置语法来执行诸如替换列名中的字符或为列名使用任何类型的表达式之类的操作,但是您可以使用对
信息\u架构
的查询来生成有效执行这些操作的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 "% %"
;

没有内置语法来执行诸如替换列名中的字符或使用任何类型的表达式作为列名之类的操作,但是您可以使用对
信息\u架构
的查询来生成有效执行这些操作的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 "% %"
;

您指的是在列的值中替换“”,还是实际的列名?您得到的确切错误消息是什么?代码是什么样子的?让我们看看您尝试过的“替换”代码。@uuerdo:我试图在所有表的所有列名中将“”替换为“uu”。@Jacobm001:我的错误消息是;错误1064(42000):您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“…blah,blah,blah syntax…”附近使用的正确语法-错误是连续的,无论结构如何,也不管我使用什么语法。您指的是在列的值中替换“”,还是实际的列名?您得到的确切错误消息是什么?代码是什么样子的?让我们看看您尝试过的“替换”代码。@uuerdo:我试图在所有表的所有列名中将“”替换为“uu”。@Jacobm001:我的错误消息是;错误1064(42000):您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“…诸如此类,诸如此类语法…”附近使用的正确语法-无论结构如何,也无论我使用什么语法,错误都是连续的。我会尝试一下。非常感谢。有了它,也许我必须编写自己的函数来实现这一点。我将试一试。非常感谢。有了它,也许我必须编写自己的函数来实现这一点。