在我的MYSQL数据库中,保存的电子邮件是jiaweitan05@gmail.com
。当我用大写字母登录像JIAWEITAN05@GMAIL.COM
这样的电子邮件时,它是成功登录的,因为每个字母都是正确的。但是我应该如何处理大写字母敏感的电子邮件输入情况。因此当JIAWEITAN05@GMAIL.COM将SQL查询与小资本进行比较时的用户输入jiaweitan05@gmail.com不匹配,因为区分大小写。或者我应该考虑实现这个功能吗?
您可以检查电子邮件是否包含这样的大写字母:
boolean isUpperCase =false;
for(int i=0;i<string.length;i++)
{
isUpperCase = Character.isUpperCase("My String".charAt(i));
}
if(isUpperCase==true)
{
// give error to user
}
尝试使用case-insensitive collation
。将ause a
区分大小写的comparison of
非二进制字符串to be case insensitive, use
COLLATE命名为不区分大小写排序规则
Select * from table
where email = 'JIAWEITAN05@GMAIL.COM' collate utf8_bin
你必须更改你的列名
email varchar(size) collate utf8_bin
二进制字符串在比较中区分大小写。要将字符串比较为不区分大小写,请将其转换为nonbinary
字符串,并使用COLLATE
将不区分大小字母的排序规则命名为
示例:
mysql>SET @s = BINARY 'aBcD';
mysql> SELECT @s, LOWER(@s), UPPER(@s);
+------+-----------+-----------+
| @s | LOWER(@s) | UPPER(@s) |
+------+-----------+-----------+
| aBcD | abcd | ABCD |
+------+-----------+-----------+
您可以尝试类似的东西
SELECT * FROM table_name WHERE UPPER(column_name) = UPPER('jiaweitan05@gmail.com')