有没有办法轻松地将包含数据的列TEXT
转换为VARCHAR(X)
?列中没有现有记录长于X
。
答案 0 :(得分:39)
肯定是
ALTER TABLE table_name MODIFY column_name VARCHAR(X)
答案 1 :(得分:4)
对于MS SQL:
ALTER TABLE table_name
ALTER COLUMN column_name datatype(value)
对于MySQL
ALTER TABLE table_name
MODIFY column_name datatype(value)
答案 2 :(得分:1)
我用这个来改变我的数据库。执行它,然后复制所有行,粘贴到查询字段,删除标题并运行。
更改DB = itsd:
中所有表的ENGINE,CHARSET和COLLATIONSELECT 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和COLLATIONSELECT 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";
答案 3 :(得分:0)
对于 postgres
ALTER TABLE "table_name" ALTER COLUMN "column_name" TYPE VARCHAR(x);