我正在检查 MySQL 中具有奇怪列名的表。我想将列的名称更改为不奇怪。我不知道该怎么做。
首先,如果我先做
SET NAMES utf8;
DESC `tblName`;
我明白了
| Ԫ | varchar(255) | YES | MUL | NULL | |
相反,做
SET NAMES latin1;
DESC `tblName`;
结果是
| ? | varchar(255) | YES | MUL | NULL | |
很公平 - 这让我认为列名只是一个 latin1 问号。但是这个声明不起作用:
mysql> ALTER TABLE `tblName` CHANGE COLUMN `?` `newName` VARCHAR(255);
ERROR 1054 (42S22): Unknown column '?' in 'tblName'
所以我去 information_schema 表获取一些信息:
mysql> SELECT column_name, HEX(column_name), ordinal_position FROM information_schema.columns WHERE table_schema = 'myschema' AND table_name = 'tblName' ;
| ? | D4AA | 48 |
我查了这个十六进制点,假设我查对了(这可能不是真的),我确定这个字符是“풪”,即“hangul sylable pweoj”。所以我在alter table语句中尝试了这一点,但无济于事:
ALTER TABLE `tblName` change column `풪` `newName` VARCHAR(255);
所以这就是我卡住的地方。