在使用ASP语言连接ACCESS数据库进行数据查询时,会用到相应的SQL语句,比如:
select * from 表名 where 字段名 比较符(=、<、>、like等) 变量(或常量)
我们来进行实例分析,比如要求在table中查询title字段中包含“city”的条目,我们可以写成:
select * from table where title like '%city%'
但其实,为了实现上面的查询要求,还有另外一种SQL语句的写法:
select * from table where instr(title ,'city')>0
本人才疏学浅,这第二种写法对我来说,是最近刚刚学习到的,之前几年都只知道第一种写法。那么,为什么平白无故,我突然学到了第二种写法呢?这是因为在一个网页的程序编写时,需要将SQL语句作为参数在URL中传递,而当SQL语句中包含"%"时,传递到URL后,再从URL获取这个SQL语句,就会出现问题,导致新的查询无法实现,于是便有了尝试用另外一种写法代替 select * from table where title like '%city%' 这一写法的思路,于是乎上网搜索了一下,果然还真有等价的其它写法!
下面想说的SQL语句特殊用法是当select * from table where 后面有多个查询条件时,并且这些条件之间既有 and 关系,也有 or 的关系,而此时,根据 and 优先于or的原则,程序会先查询符合 and 的条件,然后再执行符合 or的条件,但是,我们想要的确实,先执行所有的 or ,然后再将 or 的结果 与其它条件进行 and 查询。于是便有了将所有进行or的条件外面加一个括弧,让括弧里面先执行or ,然后将括弧的执行结果与其它条件进行 and 查询。
呃,说多了都是废话!…… 来看看实例吧:
我们想在table表中查询name字段中包含“赵”,并且city字段既不等于北京,也不等于天津的记录,正确的写法如下:
select * from table where name like ‘%赵%’ and ( city <> '北京' or city <> '天津' )
试想,如果没有了括弧,这个语句的查询结果就大不一样了!!!
还是那句话, 本人才疏学浅,之前并不知道可以再SQL语句中通过加括弧的形式,对多个查询条件进行组合。