TEXT
有没有办法VARCHAR(X)
轻松转换包含数据的列?列中没有任何现有记录的长度超过X
。
问问题
40920 次
4 回答
54
是肯定的
ALTER TABLE table_name MODIFY column_name VARCHAR(X)
于 2012-11-23T14:41:06.397 回答
7
对于 MS SQL:
ALTER TABLE table_name
ALTER COLUMN column_name datatype(value)
对于 MySQL
ALTER TABLE table_name
MODIFY column_name datatype(value)
于 2012-11-23T14:41:43.470 回答
1
我用它来大规模更改我的数据库。执行它,然后复制所有行,粘贴到查询字段中,删除标题并运行。
更改 DB=itsd 中所有表的 ENGINE、CHARSET 和 COLLATION:
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," ENGINE=INNODB,
CHARSET=utf8, COLLATE=utf8_general_ci;") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="itsd"
AND TABLE_TYPE="BASE TABLE";
转换 DB=itsd 中所有表的 CHARSET 和 COLLATION:
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," CONVERT TO
CHARACTER SET utf8;") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="itsd"
AND TABLE_TYPE="BASE TABLE";
将 DB=itsd 中所有表的所有 TEXT 字段更改为 VARCHAR(255):
SELECT CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' MODIFY COLUMN ',
column_name, ' VARCHAR(255);')
FROM information_schema.columns
WHERE TABLE_SCHEMA = 'itsd'
AND DATA_TYPE = 'text'
AND TABLE_TYPE="BASE TABLE";
于 2017-12-20T09:18:16.357 回答
0
对于 postgres
ALTER TABLE "table_name" ALTER COLUMN "column_name" TYPE VARCHAR(x);
于 2021-05-17T07:22:08.310 回答