SQL查询过滤Where子句用法

📅 2026/7/28 18:42:19
SQL查询过滤Where子句用法
大多数情况下查询关注的是表中所有行的一个子集需要用到Where过滤本文主要介绍过滤的条件连接符AND, OR, NOT,条件类型相等条件、范围条件、成员条件、通配条件以及当列名包含NULL值的注意事项。1. 条件连接符1) ANDa AND b选取要a和b都为真的数据子集2) ORa OR b选取要a或b都为真的数据子集3) ()当条件为3个或以上时常常需要用到比如 a AND (b OR c4) NOTNOT a选区非a的数据子集NOT 对开发者来说增加了对条件评估的难度一般尽量避免使用如WHERE end_date IS NULLAND NOT (title Teller OR start_date 2007-01-01)可转换为WHERE end_date IS NULLAND title Teller AND start_date 2007-01-012. 条件类型1) 相等条件操作符 2) 范围条件操作符 ,, between例如SELECT emp_id, fname, lname, start_dateFROM employeeWHERE start_date 2007-01-01;WHERE start_date BETWEEN 2005-01-01 AND 2007-01-01;使用BETWEEN是跟这BETWEEN后的一定要是范围的下限AND后接范围上限否则会是空集这是因为BETWEEN a AND b等价于axb3) 成员条件操作符 IN, NOT IN,例如SELECT account_id, product_cd, cust_id, avail_balanceFROM accountWHERE product_cd IN (CHK,SAV,CD,MM);IN 后面也可以接子查询如SELECT account_id, product_cd, cust_id, avail_balanceFROM accountWHERE product_cd IN (SELECT product_cd FROM productWHERE product_type_cd ACCOUNT);4)匹配条件通配符_表示一个字符通配符“%”表示任意个字符通配符关键词LIKESELECT lnameFROM employeeWHERE lname LIKE _a%e%; #第二个字符为a且后面有e字符SELECT emp_id, fname, lnameFROM employeeWHERE lname LIKE F% OR lname LIKE G%; # 查找姓氏以F和G开头的员工姓名3. NULL条件注意表达式为IS NULL不能写出NULL两个NULL只也不能判断相等如如果改成 NULL, 则查询结果是空集但不会报错不熟悉SQL常犯错误如果值中包括NULL, 则在使用!时要考虑到NULL值的数据因为!只对有值的情况进行判断例如查找上级ID不是6Helen Fleming的所有员工SELECT emp_id, fname, lname, superior_emp_idFROM employeeWHERE superior_emp_id ! 6;结果不包含superior_emp_id列为NULL的Michael SmithSELECT emp_id, fname, lname, superior_emp_idFROM employeeWHERE superior_emp_id ! 6 OR superior_emp_id IS NULL;