zoukankan      html  css  js  c++  java
  • 反义运算符

    “=”、“<”、“>”等运算符都是用来进行数值判断的,有的时候则会想使用这些运算符的反义,比如“不等于”、“不小于”或者“不大于”,MSSQLServer、DB2提供了“!”运算符来对运算符求反义,也就是“!=”表示“不等于”、“!<”表示“不小于”,而“!>”表示“不大于”。

    比如要完成下面的功能“检索所有年龄不等于22岁并且工资不小于2000元”,我们可以编写下面的SQL语句:

    
    SELECT * FROM T_Employee WHERE FAge!=22 AND FSALARY!<2000
    

    执行完毕我们就能在输出结果中看到下面的执行结果:

    “!”运算符能够把“不等于”、“不大于”、“不小于”这样的语义直接翻译成SQL运算符,不过这个运算符只在MSSQLServer和DB2两种数据库系统上提供支持,如果在其他数据库系统上则可以用其他的变通的方式实现,最常用的变通实现方式有两种:使用同义运算符、使用NOT运算符。

    否定的语义都有对应的同义运算符,比如“不大于”的同义词是“小于等于”、而“不小于”的同义词是“大于等于”,同时SQL提供了通用的表示“不等于”的运算符“<>”,这样“不等于”、“不大于”和“不小于”就分别可以表示成“<>”、“<=”和“>=”。因此要完成下面的功能“检索所有年龄不等于22岁并且工资不小于2000元”,我们可以编写下面的SQL语句:

    
    SELECT * FROM T_Employee WHERE FAge<>22 AND FSALARY>=2000
    

    NOT运算符用来将一个表达式的值取反,也就是将值为“真”的表达式结果变为“假”、将值为“假”的表达式结果变为“真”,使用方式也非常简单“NOT (表达式)”,比如要表达“年龄不小于20”,那么可以如下使用“NOT(Fage<20)”。因此要完成下面的功能“检索所有年龄不等于22岁并且工资不小于2000元”,我们可以编写下面的SQL语句:

    
    SELECT * FROM T_Employee WHERE NOT(FAge=22) AND NOT(FSALARY<2000)
    

    使用“!”运算符的方式由于只能运行在MSSQLServer和DB2两种数据库系统上,所以如果应用程序有移植到其他数据库系统上的需求的话,就应该避免使用这种方式;使用同义运算符的方式能够运行在所有主流数据库系统上,不过由于粗心等原因,很容易将“不大于”表示成“<”,而忘记了“不大于”是包含“小于”和“等于”这两个意思的,这样就会造成检索数据的错误,造成应用程序的Bug;而采用NOT运算符的方式能比较容易的表达要实现的需求,而且能够实现复杂的嵌套,最重要的是避免了潜在的应用程序的Bug,所以除了“<>”这种方式之外,我们推荐使用NOT运算符的方式来表示“非”的语义。

  • 相关阅读:
    HDOJ/HDU 2560 Buildings(嗯~水题)
    HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)
    POJ1703Find them, Catch them
    BZOJ2303: [Apio2011]方格染色
    BZOJ2809: [Apio2012]dispatching
    POJ1611The Suspects
    BZOJ2006: [NOI2010]超级钢琴
    BZOJ2288: 【POJ Challenge】生日礼物
    BZOJ1150: [CTSC2007]数据备份Backup
    洛谷P1316 P1824
  • 原文地址:https://www.cnblogs.com/yuyu666/p/9820048.html
Copyright © 2011-2022 走看看