SQL中区分大小写的搜索不起作用

问题描述:

我创建了一个数据库,但没有定义字符集,因此默认为拉丁语。现在我需要做一个区分大小写的搜索,所以我使用了命令:SQL中区分大小写的搜索不起作用

$sql = "SELECT * FROM Users WHERE username = '$value' COLLATE SQL_Latin1_General_CP1_CS_AS"; 

问题是它没有返回任何匹配。 在我的网页中,我在页面的head中有<meta charset="utf-8">,所以我想知道字符集编码是否会成为问题。 如果我在没有COLLATE SQL_Latin1_General_CP1_CS_AS的情况下进行搜索,它可以工作,但它不区分大小写。

可能是什么问题? 我应该将数据库转换为始终使用utf-8吗?

+0

的字符集是没有问题的,但你应该总是使用UTF-8(utf8mb4)。您必须使用区分大小写或二进制排序规则。 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html – 2014-12-06 18:54:00

+0

我会对用户名使用不区分大小写的方式,这样人们更容易记住他们的用户名,并且不会忘记他们是否有任何大写字母用户名中的字符。但那不是我决定的,这是你的决定。 – ub3rst4r 2014-12-06 18:58:05

+0

如果你想要一个总是以区分大小写的方式处理一个列,用一个区分大小写或二进制排序来声明它 – 2014-12-06 19:05:34

尝试二进制运算符:

$sql = "SELECT * FROM Users WHERE BINARY username = '$_POST[userName]'"; 
+0

工作表示感谢 – 2014-12-06 19:25:39