一个 SQL 同时验证帐号是否存在、密码是否正确
2012-01-14 10:31
337 查看
出处:/article/5289254.html近日偶尔看到一个很巧妙的 SQL 技巧,一个简单的 SQL 同时验证帐号是否存在、密码是否正确。之前从未曾想过这么做,也未曾见过别人这么做。虽是奇技淫巧,却真正所谓构思巧妙。如果用来面试考考别人,真的能够难倒一大片兄弟。好东西不敢独享,特公开与大家同乐。
解释:
a. 如果用户名不存在,则查询结果是无数据
b. 如果用户名存在,而密码不正确,则返回 0
c. 如果用户名存在,而密码正确,则返回 1
之所以把密码单独用一个表保存,是因为用户的其他信息(用户名、邮件、电话)与密码是两种不同性质的东西,系统架构师决定分开保存,有助于提醒程序员这种差别: 用户的其他信息可以查看,密码不能查看;用户的其他信息更改时可以看到更改前的数据,密码更改时不能看到更改前的数据;修改用户密码与修改用户其他信息,是两个不同页面。虽说程序员普遍有“文人相轻”的毛病(读书人互相瞧不起),但看到这个 SQL,不能不让人佩服。
SELECT CASE WHEN p.encrypted_password =? THEN 1 ELSE 0 END FROM tm_app_user u, tm_app_user_credential p WHERE u.app_user_uuid = p.app_user_uuid AND (LOWER(u.user_sign_in_nm) = ? OR LOWER(u.email) = ?)
解释:
a. 如果用户名不存在,则查询结果是无数据
b. 如果用户名存在,而密码不正确,则返回 0
c. 如果用户名存在,而密码正确,则返回 1
之所以把密码单独用一个表保存,是因为用户的其他信息(用户名、邮件、电话)与密码是两种不同性质的东西,系统架构师决定分开保存,有助于提醒程序员这种差别: 用户的其他信息可以查看,密码不能查看;用户的其他信息更改时可以看到更改前的数据,密码更改时不能看到更改前的数据;修改用户密码与修改用户其他信息,是两个不同页面。虽说程序员普遍有“文人相轻”的毛病(读书人互相瞧不起),但看到这个 SQL,不能不让人佩服。
相关文章推荐
- [转]一个 SQL 同时验证帐号是否存在、密码是否正确
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- 一个 SQL 同时验证帐号是否存在、密码是否正确
- SQL应用参考大全(转——本人尚未全部验证是否正确,同时对于不同的数据库会有关键字上的出入,请参考者留意)
- 登陆163邮箱 验证邮箱帐号密码是否正确
- layui 表单验证旧密码是否输入正确(验证用户名是否被使用,也可以用这种方法)
- sql判断一个表是否存在 以及表中的字段是否存在
- 输入一个Email地址,然后使用正则表达式验证该Email地址是否正确。
- (SQL)比较一个集合是否在另一个集合里存在的方法
- 04 用户名和密码验证是否正确
- 使用java连接AD域,验证账号密码是否正确
- android请求连接wifi之后验证密码是否正确的方法
- 输入一个Email地址,然后使用正则表达式验证该Email地址是否正确。
- 在SQL中判断一个表是否存在
- 18. 请写一个函数验证电子邮件的格式是否正确 (2分)
- 输入一个Email地址,然后使用正则表达式验证该Email地址是否正确。
- 【Openfire】验证用户输入密码是否正确
- sql语句判断一个表里是否存在某列