问题描述:
请看下面两条查询语句:
1.select * from userinfo where username=‘admin’
2.select * from userinfo where username='admin '
第二条的where语句admin后面有一个空格,但执行两条语句等到的查询结果是一样的。当用户登录时在帐号后面输入空格也能登录成功,这不是我想要的结果。
解决办法:
在增加一个条件语句,通过判断长度,来验证输入的是否正确,首先使用了len函数。如下:
select * from userinfo where username='admin ’ and len(username)=len('admin '),本以为可以得到我想要的结果了,但并没有如我所愿,len函数也自动忽略了后面的空格。继续查找资料得到datalength函数。把len替换成datalength.得到如下语句select * from userinfo where username='admin ’ and datalength(username)=datalength('admin ')。执行后终于得到了我想要的结果。
谨以此记录我踩过的坑,欢迎批评指正。