删除两张表中相似的utf8mb4编码数据
如何在两张表中删除使用utf8mb4编码的数据,其中数据可能包含类似但不同的字符?
具体问题:
- 表 t1 和 t2 分别具有字段 id 和 username。
- 第一个表中包含一条用户名为 “cǒcǒ” 的数据和一条用户名为 “coco” 的数据。
- 第二个表中包含一条用户名为 “cócǒ” 的数据。
- 需要使用 utf8mb4 校对集删除两张表中的所有用户名包含 “coco” 的数据。
解决方案:
按照 delete 语句的多表语法,可以执行以下查询:
DELETE FROM t1, t2 WHERE convert(t1.username USING utf8mb4) = convert(t2.username USING utf8mb4);
此查询将在两个表中都删除用户名包含 “coco” 的所有数据,即使它们在不同的字符编码下可能看起来相似。