我在 MySQL 数据库中创建了一个存储文本字段的表:
CREATE TABLE `Usuarios` (
`Id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Nombre` varchar(50) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我输入了 2 个名字:José 和 José
从 Java 我做了一个搜索查询,告诉我我有两个相等的记录:
ResultSet resultado = consulta.executeQuery("SELECT COUNT(*) FROM `Usuarios` WHERE UPPER(`Nombre`) = ‘JOSÉ’";
resultado.first();
System.out.println("Usuarios llamados JOSÉ: " + resultado.getInt(1));
答案:名为 JOSÉ 的用户:2
如何防止它对重读元音和非重读元音一视同仁?
这样做
utf8_bin
,为此使用保留字COLLATE
。有了这个charset
,我们向 MySQL 表明搜索中的比较是在二进制级别完成的,现在它将能够区分带重音和不带重音的单词,大写和小写,它会是这样的:从这里获得:
这里
问题是
COLLATION
表的默认设置为utf8_general_ci
._ci
代表不区分大小写。更改utf8_bin
它以修复它。信息取自MySQL 手册要只更改一张表,我们必须这样做:
并更改整个数据库: