首页 > 解决方案 > 当字符串值不正确时如何在mysql中转换字段字符?

问题描述

这是我的创建表 sql:

CREATE TABLE `owner` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET gbk NOT NULL
  PRIMARY KEY (`id`)
);

表中已经有一些历史数据。
我想将名称字段的字符从gbk更改为utf8
当我执行此 sql 时:

ALTER TABLE owner MODIFY COLUMN name varchar(100) CHARACTER SET utf8;

返回错误信息

错误 1366 (22007):不正确的字符串值:列 '\xA3\xA0' testowner. name在第 3047064 行

检查此行数据:

MariaDB [sd]> select * from owner limit 3047063,1;
+-------------+------------+
| id          | name       |
+-------------+------------+
| 3047945     | 欧文?      |
+-------------+------------+
1 row in set (0.402 sec)

我认为问题应该出现在这个上?

还有很多其他类似的数据,如何快速处理?
可以删除,可以更新。

标签: mysql

解决方案


问题已经解决了!
使用HEX功能。

select * from owner where hex(name) like '%A3A0'

推荐阅读