前事不忘,后事之师,不忘国耻!

 注册  找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1936|回复: 0

逆向思维撰写SQL语句

[复制链接]

逆向思维撰写SQL语句

[复制链接]
ehxz

主题

0

回帖

7251

积分

管理员

积分
7251
2007-9-12 09:54:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
  与SQL语句打交道可以说是每天都做的事情,但如何撰写高效的语句则是我们最关心的问题, 一般的查询语句会由于索引的不同,而导致查询效率相差上百倍,一旦达到一定的数据量你就会发觉索引的好处,在本文中将不介绍索引,在之前的文章也提到如何有效的建立索引,本文将采用逆向思维来撰写SQL语句,现举例如下:

create table student(
id varchar(4) not null,
username varchar(20),
sex varchar(50),
age varchar(4),
class varchar(50),
constraint sy_test_key primary key ( id))

  假设现在class条件如果传入空的话,就查询所有,如果不为空的话,就根据特定条件查找,一般的写好将对其进行判断,然后写两条SQL语句,例如:(假设传入的班级变量为classStr)

if("".equals(classStr))//注意此处这种写好优于classStr.equals(""),这样写的话,假如classStr传入的为Null,则会报错
sql="select * from student";
else
sql = "select * from student where class='"+classStr+"'";

  若采用逆向思维的话,则写一条语句就可以解决上面的问题。

sql = "select * from student where ''='" + classStr + "' or '"+classStr+"'=class"

  由上面语句可看出,如果classStr为空的话,则查询所有,若classStr不为空的话,则根据其值进行查询。

  虽然不是很难的问题,但平时一点一滴的积累将有助于我们不断提高自己,而且这种做法将使我们平时写存储过

  程处理相关问题时更加方便。
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2024-11-22 17:26 , Processed in 0.060667 second(s), 11 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表