逆向思维撰写SQL语句
与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]