MySQL小写来比较数据

时间:2012-04-02 02:42:55

标签: php mysql

我想从数据库中的一行获取内容,并将其小写版本与用户输入的小写版本进行比较,以检查它是否存在于数据库中:

"SELECT `id` FROM `user_accounts` WHERE `username` = '".strtolower($username)."'"

如何从mysql获取小写的用户名?

8 个答案:

答案 0 :(得分:25)

您使用lower(usernamehttp://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_lower

"SELECT `id` FROM `user_accounts` WHERE LOWER(`username`) = '".strtolower($username)."'"

答案 1 :(得分:8)

如果你真的想要无关紧要,那么你应该将列的排序规则设置为不区分大小写。

mysql> SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
Query OK, 0 rows affected (0.03 sec)

mysql> SELECT 'foobar' = 'FoObAr';
+---------------------+
| 'foobar' = 'FoObAr' |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.01 sec)

mysql> SELECT 'fOoBaR' = 'FoObAr';
+---------------------+
| 'fOoBaR' = 'FoObAr' |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT 'fOoBaR' = 'FoObAz';
+---------------------+
| 'fOoBaR' = 'FoObAz' |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)

答案 2 :(得分:3)

如上所述,理想情况下这应该有效,

$query = "SELECT `id` 
          FROM `user_accounts` 
          WHERE LOWER(`username`) = '".strtolower($username)."'";

但如果“user_accounts”表中的“username”列定义为VARBINARY,则无效。原因是VARBINARY要求数据区分大小写

答案 3 :(得分:2)

$query = "SELECT `id` 
          FROM `user_accounts` 
          WHERE LOWER(`username`) = '".strtolower($username)."'"

答案 4 :(得分:2)

使用上述查询之一应该可以正常工作,但小心!如果您的用户名列已编入索引,则使用LOWER会使您的查询无法使用该索引。

答案 5 :(得分:1)

您可以使用以下查询执行此操作:

$myquery = "SELECT `id` FROM `user_accounts` WHERE
            LOWER(`username`) = '".strtolower($username)."'"

LOWER是将所有字符转换为小写的SQL函数,就像PHP的strtolower

一样

旁注:您应该使用$username转义mysql_real_escape_string以避免此时可能的SQL注入。

答案 6 :(得分:0)

只需使用:

SELECT `id`
FROM `user_accounts`
WHERE LOWER(`username`)='".strtolower($username)."'";

或使用

SELECT `id` 
FROM `user_accounts` 
WHERE LCASE(`username`)='".strtolower($username)."'";

两者都是一样的。

答案 7 :(得分:-1)

"SELECT `id` FROM `user_accounts` WHERE lower(`username`) = '".strtolower($username)."'"