日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL查询过滤Where子句用法

發布時間:2023/12/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL查询过滤Where子句用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大多數情況下,查詢關注的是表中所有行的一個子集,需要用到Where過濾,本文主要介紹過濾的條件連接符(AND, OR, (),NOT),條件類型(相等條件、范圍條件、成員條件、通配條件)以及當列名包含NULL值的注意事項。

1. 條件連接符

1)????? AND:a AND b,選取要a和b都為真的數據子集

2)????? OR:a OR b,選取要a或b都為真的數據子集

3)????? ():當條件為3個或以上時,常常需要用到,比如 a AND (b OR c)

4)????? NOT:NOT a,選區非a的數據子集,NOT 對開發者來說,增加了對條件評估的難度,一般盡量避免使用:

??????? 如:WHERE end_date IS NULL

??????????????????????? AND NOT (title = 'Teller' OR start_date < '2007-01-01')

???????? 可轉換為:WHERE end_date IS NULL

???????????????????????????????????? AND title != 'Teller' AND start_date > '2007-01-01'

2. 條件類型

1)????? 相等條件,操作符 =,!=,<>

2)????? 范圍條件,操作符 >,<, between,例如:

SELECT emp_id, fname, lname, start_date

FROM employee

WHERE start_date < '2007-01-01';

?

WHERE start_date BETWEEN '2005-01-01' AND '2007-01-01';

使用BETWEEN是,跟這BETWEEN后的一定要是范圍的下限,AND后接范圍上限,否則會是空集,這是因為BETWEEN a AND b等價于a<=x<=b

3)????? 成員條件,操作符 IN, NOT IN, 例如:

SELECT account_id, product_cd, cust_id, avail_balance

FROM account

WHERE product_cd IN ('CHK','SAV','CD','MM');

?

IN 后面也可以接子查詢,如:

SELECT account_id, product_cd, cust_id, avail_balance

FROM account

WHERE product_cd IN (SELECT product_cd FROM product

???????? WHERE product_type_cd = 'ACCOUNT');

4)????? 匹配條件,通配符:"_"表示一個字符通配符,“%”表示任意個字符通配符,關鍵詞LIKE

?

SELECT lname

FROM employee

WHERE lname LIKE '_a%e%'; #第二個字符為a,且后面有e字符

?

SELECT emp_id, fname, lname

FROM employee

WHERE lname LIKE 'F%' OR lname LIKE 'G%';? # 查找姓氏以F和G開頭的員工姓名

3. NULL條件

注意:表達式為"IS NULL",不能寫出"=NULL",兩個NULL只也不能判斷相等,如:

?

如果改成 =?NULL, 則查詢結果是空集但不會報錯(不熟悉SQL常犯錯誤):

?

如果值中包括NULL, 則在使用"!="時要考慮到NULL值的數據,因為"!="只對有值的情況進行判斷:

例如:查找上級ID不是6(Helen Fleming)的所有員工

SELECT emp_id, fname, lname, superior_emp_id

?FROM employee

WHERE superior_emp_id != 6;

結果不包含superior_emp_id列為NULL的Michael Smith

?

SELECT emp_id, fname, lname, superior_emp_id

FROM employee

WHERE superior_emp_id != 6 OR superior_emp_id IS NULL;

總結

以上是生活随笔為你收集整理的SQL查询过滤Where子句用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。