逆向思维撰写SQL语句

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

 

create table student(
id varchar(8) not null,
username varchar(20),
sex varchar(2),
age varchar(3),
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不为空的话,则根据其值进行查询。

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

程处理相关问题时更加方便。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值