1 2(SQL學習筆記)高階資料過濾

2021-09-24 22:29:15 字數 2272 閱讀 6746

一、and

通過where可以進行條件過濾,但只限於單個條件。

通過and就可以連線多個條件,and代表了和,即and兩邊的條件全部滿足才會通過篩選。

這就類似程式語言中的&&。

以下表為例:

找出vend_id 等於『dll01』且prod_price > 4資訊。

二、or

or代表了或者,篩選時只需滿足or任意一邊的條件即可。類似程式語言中的||。

例如:

尋找vend_id = 'dll01'或者prod_price > 4的資訊,只需滿足任何乙個即可。

三、組合次序。

or和and可以聯合使用,但需要注意其組合次序,一般and優先順序高於or。

使用時最好加上()以表明那個操作符是乙個整體。

加上括號後會先算括號內的,如果不加括號會先算and兩邊的條件。

使用時最好加上括號。

四、in

in用於指定條件範圍,即只需滿足in指定的多個條件其中乙個即可。

where id in(1,2,3) 只需id等於1或2或3即滿足條件。

等價於where id = 1 or id = 2 or id = 3;

vned_id等於'dll01'或『brs01』的使用者被篩選出來了。

主要是in() 的括號中可以新增select語句,將select語句的檢索結果作為判斷引數。

五、not操作符

not操作符就是否認後面的條件,類似程式設計語句的!。

如果not後面是單一的條件,則否定是後面的單個條件。

如果not後面是被括號括起的多個條件,則否定的是這個括號內多個條件的結果。

例如(條件1...條件n) 為真, 則 not(條件1...條件n)為假。

下面看具體例子

否定後面單個條件,即變成了 prod_price >= 4 and prod_price < 6。

括號內條件篩選時所有小於4且小於6的資訊(即所有小於4的資訊),加上not後就變成了所有大於等於4的資訊。

該例原本是vend_id等於'dll01'或『brs01』,加上not後就變成了除了這些資料(滿足vend_id等於『dll01』或「brs01」)之外的其他資料。

即  not (vend_id = 'dll01'  or  vend_id = 'brs01')等價 (not vend_id = 'dll01'  and not vend_id = 'brs01').記得這是乙個定理具體的名字忘了。

!(a || b) == !a && !b

六、用萬用字元進行過濾

使用萬用字元就可以實現類似正規表示式的操作,匹配資料中指定資料,使匹配更加靈活。

例如我想匹配所有商品名稱中帶『dog』的商品,這時採用常規操作比較難辦到。

萬用字元就是一些代表特殊含義的字元,使用這些特殊含義的字元時需要通過like匹配。

6.1 %

%萬用字元代表任意字元出現任意次數。(空格也是字元)

prod_name like '%be%'代表只要prod_name中有『be』,『be『 前面、後面可以是任意字元出現任意次數。

6.2 _

_萬用字元代表任意字元出現一次

匹配了『8 inch teddy bear』,但沒有匹配『12 inch teddy bear』 因為12是兩個字元所以需要『__』(兩個)

注意空格也是字元,『_ in%』中'_'和in之間需要乙個空格。

SQL學習筆記之高階資料過濾

通過組合where子句建立功能更強 更高階的搜尋條件 sql可以通過and子句和or子句組合多個where子句 要過濾不止乙個列,可以通過and操作符給where子句附加條件 select prod id,prod price,prod name from products where vend i...

SQL學習筆記 《SQL高階教程》1 2

自連線 非等值連線 自連線 group by 遞迴集合 表是行的集合,面向集合 開銷較大 唯二重要的方法 case 自連線 sql語言 面向集合的特性 有序對 無序對 獲取可重排列 交叉連線 笛卡爾積 3 3 select p1.name as name 1,p2.name as name 2 fr...

SQL學習之高階資料過濾

一 高階資料過濾之in操作符 in 操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配。in取一組由逗號分隔 括在圓括號中的合法值。如下 select itemid,itemname,checkvaluenum,checkvaluestring,resultlevel from t check ...