【发布时间】:2019-06-19 11:08:18
【问题描述】:
使用 MariaDB 10.0.36,我有一个用户表,其排序规则为 utf8_turkish_ci 和一个 user_login 列,该列存储用户的用户名,该用户名也使用具有唯一索引的 utf8_turkish_ci 排序规则。
我的理解是 select 语句应该不区分大小写,但对于某些用户名似乎不是这样。
例如,我有一个用户登录为GoDoIt
此语句不返回任何记录:
SELECT * FROM user WHERE user_login = 'godoit'
但是,这是可行的:
SELECT * FROM user WHERE user_login = 'GoDoIt'
我觉得这很奇怪,因为Eric 的用户名可以双向使用。
SELECT * FROM user WHERE user_login = 'eric'
SELECT * FROM user WHERE user_login = 'Eric'
返回相同的结果。那么为什么字符串中间的大写字母不起作用呢?在将字符串发送到数据库之前,我在字符串上使用 tolower 降低了 PHP 中的输入用户名,我猜这种方法不适用于某些用户名。
【问题讨论】:
-
这与“案例”无关。
标签: mysql mariadb collation lowercase