一个 SQL 同时验证帐号是否存在、密码是否正确

出处:http://www.cnblogs.com/jacklondon/archive/2012/01/13/2321686.html近日偶尔看到一个很巧妙的 SQL 技巧,一个简单的 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,不能不让人佩服。

转载于:https://www.cnblogs.com/wqvbjhc/archive/2012/01/14/2465086.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1427. 字符串的左右移

文章目录1. 题目2. 解题1. 题目 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift,其中 shift[i] [direction, amount]: direction 可以为 0 (表示左移)或 1 (表示右移)。 amount 表示 s 左右移的…

修改mysql数据库字符集_修改及查看mysql数据库的字符集

Liunx下修改MySQL字符集:1.查找MySQL的cnf文件的位置find / -iname *.cnf -print/usr/share/mysql/my-innodb-heavy-4G.cnf/usr/share/mysql/my-large.cnf/usr/share/mysql/my-small.cnf/usr/share/mysql/my-medium.cnf/usr/share/mysql/my-huge.cnf/usr/share/texm…

生成简单的Makefile文件(Python实现)

在linux下写几个测试程序,还要一行行的输入g命令进行编译,当经常改测试代码的时候,那一次次的敲(或者一次次的上线箭头选)也感觉不爽,不如make来的快。用Makefile的好处就不用多说了,这里我写了…

LeetCode 800. 相似 RGB 颜色

文章目录1. 题目2. 解题2.1 暴力枚举2.2 独立枚举1. 题目 RGB 颜色用十六进制来表示的话,每个大写字母都代表了某个从 0 到 f 的 16 进制数。 RGB 颜色 “#AABBCC” 可以简写成 “#ABC” 。例如,"#15c" 其实是 “#1155cc” 的简写。 现在&a…

mysql 图片base64_关于图片的Base64编码

什么是Base64编码Base64编码是一种图片处理格式,通过特定的算法将图片编码成一长串字符串,在页面上显示的时候,可以用该字符串来代替图片的url属性。base64编码就是长得像下面这样子的代码:thunder://QUFodHRwOi8vd3d3LmJhaWR1LmN…

LeetCode 243. 最短单词距离

文章目录1. 题目2. 解题1. 题目 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离。 示例: 假设 words ["practice", "makes", "perfect", "coding", "makes"] 输入: word1 “…

mysql load character_mysql load data Invalid utf8mb4 character string: ”

使用mysql的 load data 导入数据到 数据库中:LOAD DATA LOCAL INFILE /tmp/2982/20200424/user.csvINTO TABLE t_user CHARACTER SET utf8mb4 FIELDS TERMINATED BY ,LINES TERMINATED BY \r\nIGNORE 1 LINES(userName, userNo, age, homeAddr)SET province 浙江省…

LeetCode 1426. 数元素(哈希set)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr, 对于元素 x ,只有当 x 1 也在数组 arr 里时,才能记为 1 个数。 如果数组 arr 里有重复的数,每个重复的数单独计算。 示例 1: 输入:arr [1,2,3] …

mysql 默认page大小_MySQL innodb_page_size

原标题:MySQL innodb_page_size墨墨导读:Page是MySQL Innodb存储的最基本结构,也是Innodb磁盘管理的最小单位,了解page的一些特性,可以更容易理解MySQL。innodb_page_size作为innodb和OS交互单位。文件系统对文件的buf…

控制台中使用cstring和string

VC 6.0 控制台&#xff1a; 1、使用string   #include <string>using namespace std; 2、使用 cstring 首先设置"在共享 DLL 中使用 MFC"&#xff0c;然后 #include <afx.h>VS2003 控制台 1、使用string using namespace std; 2、使用csting   #incl…

LeetCode 266. 回文排列(计数)

文章目录1. 题目2. 解题1. 题目 给定一个字符串&#xff0c;判断该字符串中是否可以通过重新排列组合&#xff0c;形成一个回文字符串。 示例 1&#xff1a; 输入: "code" 输出: false示例 2&#xff1a; 输入: "aab" 输出: true示例 3&#xff1a; 输入…

centos6.5装mysql好难_CentOS6.5 下MySQL傻瓜式安装

为了为服务器上装mysql我先在虚拟机上练习了一下特此记录并分享;注:参考文章https://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html1.测系统是否自带安装mysql[rootwzpbk~]#rpm -qa | grep mysql  // 这个命令就会查看该操作系统上是否已经安装了mysql数…

Java 中实现定时服务 在ssh框架中跟普通工程里面创建的方式

http://www.iteye.com/topic/1119730转载于:https://www.cnblogs.com/caixiaoqiu/archive/2012/02/03/2336818.html

LeetCode 1150. 检查一个数是否在数组中占绝大多数(二分查找)

文章目录1. 题目2. 解题2.1 暴力2.2 二分查找1. 题目 给出一个按 非递减 顺序排列的数组 nums&#xff0c;和一个目标数值 target。 假如数组 nums 中绝大多数元素的数值都等于 target&#xff0c;则返回 True&#xff0c;否则请返回 False。 所谓占绝大多数&#xff0c;是指…

mysql 常用注入命令_SQL注入常用命令

1. 数据库查询版本Mssql select versionMysql select vresion()/select versionoracle select banner from &#xffe5;versionPostgresql select version()2. 数据库常用命令库操作连接数据库 mysql -u 用户名 -p创建数据库&#xff1a;create database 数据库名称、删除数据…

VirtualBox的Linux虚拟机访问Windows7的文件

第一步&#xff1a; 安装 VirtualBox 增强工具 点击确定&#xff0c;稍等片刻&#xff0c;VirtualBox 的增强功能就可以安装完毕。 第2步&#xff1a;设置要共享给Linux 虚拟机的文件夹&#xff08;目录&#xff09; 点击右下角的“分配数据空间” 点击“添加” 选择要共享的路…

LeetCode 1118. 一月有多少天(闰年判断)

文章目录1. 题目2. 解题1. 题目 指定年份 Y 和月份 M&#xff0c;请你帮忙计算出该月一共有多少天。 示例 1&#xff1a; 输入&#xff1a;Y 1992, M 7 输出&#xff1a;31示例 2&#xff1a; 输入&#xff1a;Y 2000, M 2 输出&#xff1a;29示例 3&#xff1a; 输入&am…

vue warning如何去掉_详解 vue 组件三大核心概念

前言本文主要介绍属性、事件和插槽这三个vue基础概念、使用方法及其容易被忽略的一些重要细节。如果你阅读别人写的组件&#xff0c;可以从这三个部分展开&#xff0c;它们可以帮助你快速了解一个组件的所有功能。本文的代码请猛戳https://github.com/ljianshu/Blog&#xff0c…

碰撞代码

碰撞代码&#xff1a;if(CGRectContainsPoint(sprite.boundingBoy, touchLocation)){[self checkTheSprites:sprite]} 转载于:https://www.cnblogs.com/ligun123/archive/2012/02/08/2343035.html

LeetCode 1133. 最大唯一数

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 A&#xff0c;请找出并返回在该数组中仅出现一次的最大整数。 如果不存在这个只出现一次的整数&#xff0c;则返回 -1。 示例 1&#xff1a; 输入&#xff1a;[5,7,3,9,4,9,8,3,1] 输出&#xff1a;8 解释&#xff1a; 数组…