案例不敏感的MySQL数据库

时间:2013-08-03 01:13:12

标签: php mysql collation case-insensitive

在我的MySQL数据库中,我的排序规则设置为utf8_general_ci。我还检查了数据库中表的排序规则。这应该允许不区分大小写的查询。但是,所有查询仍然区分大小写。

例如,如果我有第一个字母大写的用户名,则此查询将不起作用。

  SELECT * 
  FROM   users 
  WHERE  username = 'test' 
  AND    password = 'test' 

我正在使用MySQL 5.5.27社区版。感谢。

3 个答案:

答案 0 :(得分:1)

您的排序规则设置为ci(不区分大小写)仅影响您搜索数据的方式,而不会影响列。 IIRC,列名称区分大小写,表名称不区分大小写。

遵循数据库的标准命名约定。

答案 1 :(得分:0)

我不太了解数据库设置为不区分大小写,但您可以使用Lower()

例如:

SELECT * FROM users WHERE Lower(username) = 'test' AND lower(password) = 'test'

答案 2 :(得分:0)

按照@mauris的回答。 否则你在php和

中使用strtolower($ username)
SELECT * FROM users WHERE LOWER(username) = 'test' AND password = 'test'