謂詞和運算子

2021-09-24 13:49:41 字數 2393 閱讀 6576

簡單記憶可以一句話:

在t-sql 中謂詞是取值為true,false或unknown的表示式。

對於通常的函式來說,返回值有可能是數字、字串或者日期等,但是謂詞的返回值都是真值(true/false/unknown)。這是謂詞和函式的最大區別。

sql中的謂詞主要有lkie、between、is null、is not null、in、exists

一、like——模糊查詢,用來檢查字串是否能夠匹配指定的模式。

會使用到一些萬用字元(wildcard)

- %(百分號)表示任意長度的字串,包括空字串;

- -(下劃線)表示任意單個字元;

- [《字元列》]字元列,表示必須匹配列指定字元中的乙個字元

eg:查詢返回以字元』a』,或者』b』,或者』c』開頭的所有雇員

select empid,lastname

from hr.employees

where lastname like 『[abc]』%;

- [<>-<>]表示字元列範圍,必須匹配指定範圍內的乙個字元。

eg:查詢返回姓氏以字元『a』到』e』開頭的所有員工

select empid,lastname

from hr.employees

where lastname like 『[a-e]%』;

- [^字元列或範圍]

方括號中包含乙個插入符(^),後面跟著乙個字元列或範圍,表示不屬於指定字元列或範圍內的任意單個字元。

eg:查詢返回不是以字元『a』到『e』開頭的所有員工

select empid,lastname

from hr.employees

where lastname like 『[^a-e]%』;

還有轉義字元了解一下。escape

二、between(and)——範圍查詢

between的特點是結果中會包含臨界值。
三、is null、is not null

查詢某些值位null或不為null的資料列是使用。
四、in——or的簡便用法 反義;not in

使用in和not in 時,是無法選出null資料的。

in謂詞可以使用子查詢作為其引數來使用。子查詢即使sql內部生成的表,因此可以說能將表或檢視作為in的引數。

五、exist(用在子查詢中)

exist的作用就是判斷是否存在滿足某種條件的記錄,如果存在就返回真(true),不存在就返回假(false)。

not exist 與之正好相反。

注意:exist使用的是二值謂詞邏輯,總是返回true和false,而絕對不會返回unknown。

not in 和not exists的區別

如果在實際使用中要在查詢中排除null值,可以顯式或隱式的排除。

顯示的排除就是在使用not in 的子查詢中增加乙個過濾條件where 字段 is not null;

如果在有null值得情況下使用not in 而不加過濾條件則查詢會返回乙個空的結果集。

select custid,companyname

from sales.customers as c

where custid not in (select o.custid

from sales.orders as o

where o.custid is not null);

隱式的排除就是直接使用not exists,會自動過濾掉表示式結算結果為unknown的,所以子查詢中不用加過濾條件。使用not exists比not in要更安全。

select custid,companyname

from sales.customers as c

where custid not exists (select o.custid

from sales.orders as o);

運算子算術運算子

+,-,*,/,%

比較運算子

主要是:>,<,=,>=,<=,<>,(!=,!>,!<)

最後三個運算子不是標準運算子。都可以使用<>來替代。

邏輯運算子

and,or

如果對布林表示式取反,使用not 運算子。

各運算子的優先順序順序

1.() parentheses

2. * (multiply),/ (division),%(modulo)

3.+(positive),-(negative)

4.=,>,<,<=,>=,<>(comparsion operators)

5.not

6.and

7.or,between,like,in

常用的謂詞和邏輯運算子

寫sql查詢的過程中,有幾個使用得非常頻繁的謂詞和邏輯運算子,謂詞主要有in,between,以及like。邏輯運算子主要有or和and。下面來分別總結它們。in一般用於判斷乙個值是否與一組元素中的至少乙個相等。例如,以下sql查詢返回訂單id等於20180123或者2018060224或20180...

運算和運算子

運算 乙個或者乙個以上的資料經過變化得到新值的過程。運算子 用於運算的符號就是運算子 分類 1.算數運算 2.比較運算 關係運算 3.賦值運算 4.邏輯運算 5.位運算 6.成員運算 7.身份運算 1.算數運算 加法運算 減法運算 乘法運算 除法運算 地板除運算 取商運算 取餘運算 求模運算 冪運算...

關係運算子和等於運算子

有些groovy控制語句,如if和while控制語句 參見第8章 通常會使用條件 condition 來進行判斷。條件決定表示式的值為真或者假。關係運算子 等於運算子和邏輯運算通常被用於構造條件表示式 附錄c會詳細討論邏輯運算子 關係運算子如表2 5所示。四種運算子均為二元運算子,每種運算子都使用兩...