动态构造sql语句

2013-04-23
  • 1688
  • 0

一般我们在写sql语句时,where后面会跟一些查询的条件。

一般来说,这些条件语句都是固定的。比如”select * from table where id > 5”,但有些情况下我们需要动态构造sql语句。

比如在一个查询的页面中,用户可以选择查询的选项。他可以选择在所有数据中年龄大于某个数字的,或者地点是某个城市的。也就是说他可以自己输入查询的关键词。这种情况下我们不能写死where后面的查询语句。如果用户输入了两个关键词,sql语句是

“select * from table where age > ‘18’ and city = ‘北京’ ”,这时sql语句是正确的,可以执行。

但用户没有输入的情况下,sql语句会变成”select * from table where”,很明显这条sql语句是错误的,因为没有查询的条件,所以无法执行,系统会自动报错。

而如果我们把语句改为”select * from table where 1=1”,后面部分可以让用户自行输入,后台再获取数据,如果他输入为空,这条语句也是正确的,因为1=1true,系统将会返回表中的所有数据。如果他附加了条件,将会返回查询后的数据。这样就避免了上述那种错误的情况。