在我的MYSQL数据库中保存的电子邮件是jiaweitan05@gmail.com
。当我使用所有资本案例登录JIAWEITAN05@GMAIL.COM
这样的电子邮件时,由于每个字母都是正确的,因此登录成功。但是我应该如何处理电子邮件输入的资本敏感案例。因此,当用户输入的 JIAWEITAN05@GMAIL.COM 同时将SQL查询与小资本 jiaweitan05@gmail.com 进行比较时,由于资本区分大小写而不匹配。或者我应该考虑实现这个功能吗?
答案 0 :(得分:0)
您可以检查电子邮件是否包含大写字母:
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
}
答案 1 :(得分:0)
你可以试试像
这样的东西SELECT * FROM table_name WHERE UPPER(column_name) = UPPER('jiaweitan05@gmail.com')
答案 2 :(得分:0)
尝试使用case-insensitive collation
。对c 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 |
+------+-----------+-----------+