日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL基礎(chǔ)教程5 —— 操作符

瀏覽:22日期:2023-10-17 16:08:48
1.操作符優(yōu)先級

以下列表顯示了操作符優(yōu)先級的由低到高的順序。排列在同一行的操作符具有相同的優(yōu)先級。

:=

||, OR, XOR

&&, AND

NOT

BETWEEN, CASE, WHEN, THEN, ELSE

=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN

|

&

<<, >>

-, +

*, /, DIV, %, MOD

^

- (一元減號), ~ (一元比特反轉(zhuǎn))

!

BINARY, COLLATE

注釋:假如HIGH_NOT_PRECEDENCE SQL模式被激活,則NOT的優(yōu)先級同the !操作符相同。

2.圓括號( ... )使用括弧來規(guī)定表達式的運算順序,例如:

mysql> SELECT 1+2*3;-> 7mysql> SELECT (1+2)*3;-> 93.比較函數(shù)和操作符

比較運算產(chǎn)生的結(jié)果為1(TRUE)、0 (FALSE)或NULL。這些運算可用于數(shù)字和字符串。根據(jù)需要,字符串可自動轉(zhuǎn)換為數(shù)字,而數(shù)字也可自動轉(zhuǎn)換為字符串。

本章中的一些函數(shù)(如LEAST()和GREATEST())的所得值不包括1 (TRUE)、0 (FALSE)和NULL。然而,其所得值乃是基于按照下述規(guī)則運行的比較運算:

MySQL按照以下規(guī)則進行數(shù)值比較:

若有一個或兩個參數(shù)為NULL,除非NULL-safe <=>等算符,則比較運算的結(jié)果為NULL。若同一個比較運算中的兩個參數(shù)都是字符串,則按照字符串進行比較。若兩個參數(shù)均為整數(shù),則按照整數(shù)進行比較。十六進制值在不需要作為數(shù)字進行比較時,則按照二進制字符串進行處理。假如參數(shù)中的一個為TIMESTAMP或DATETIME列,而其它參數(shù)均為常數(shù), 則在進行比較前將常數(shù)轉(zhuǎn)為timestamp。這樣做的目的是為了使ODBC的進行更加順利。注意,這不適合IN()中的參數(shù)!為了更加可靠,在進行對比時通常使用完整的datetime/date/time字符串。在其它情況下,參數(shù)作為浮點數(shù)進行比較。

在默認狀態(tài)下,字符串比較不區(qū)分大小寫,并使用現(xiàn)有字符集(默認為cp1252 Latin1,同時對英語也適合)。

為了進行比較,可使用CAST()函數(shù)將某個值轉(zhuǎn)為另外一種類型。 使用CONVERT()將字符串值轉(zhuǎn)為不同的字符集。

以下例子說明了比較運算中將字符串轉(zhuǎn)為數(shù)字的過程:

mysql>SELECT 1 > ’6x’;

-> 0

mysql>SELECT 7 > ’6x’;

-> 1

mysql>SELECT 0 > ’x6’;

-> 0

mysql>SELECT 0 = ’x6’;

-> 1

注意,在將一個字符串列同一個數(shù)字進行比較時,MySQL不能使用列中的索引進行快速查找。假如str_col是一個編入索引的字符串列,則在以下語句中,索引不能執(zhí)行查找功能:

SELECT * FROMtbl_nameWHEREstr_col=1;

其原因是許多不同的字符串都可被轉(zhuǎn)換為數(shù)值1: ’1’、’ 1’、’1a’、 ……

=

等于:

mysql>SELECT 1 = 0;

-> 0

mysql>SELECT ’0’ = 0;

-> 1

mysql>SELECT ’0.0’ = 0;

-> 1

mysql>SELECT ’0.01’ = 0;

-> 0

mysql>SELECT ’.01’ = 0.01;

-> 1

<=>

NULL-safe equal.這個操作符和=操作符執(zhí)行相同的比較操作,不過在兩個操作碼均為NULL時,其所得值為1而不為NULL,而當(dāng)一個操作碼為NULL時,其所得值為0而不為NULL。

mysql>SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;

-> 1, 1, 0

mysql>SELECT 1 = 1, NULL = NULL, 1 = NULL;

-> 1, NULL, NULL

<> !=

不等于:

mysql>SELECT ’.01’ <> ’0.01’;

-> 1

mysql>SELECT .01 <> ’0.01’;

-> 0

mysql>SELECT ’zapp’ <> ’zappp’;

-> 1

<=

小于或等于:

mysql>SELECT 0.1 <= 2;

-> 1

<

小于:

mysql>SELECT 2 < 2;

-> 0

>=

大于或等于:

mysql>SELECT 2 >= 2;

-> 1

>

大于:

mysql>SELECT 2 > 2;

-> 0

ISboolean_valueIS NOTboolean_value

根據(jù)一個布爾值來檢驗一個值,在這里,布爾值可以是TRUE、FALSE或UNKNOWN。

mysql>SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;

-> 1, 1, 1

mysql>SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;

-> 1, 1, 0

IS NULL IS NOT NULL

檢驗一個值是否為NULL。

mysql>SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;

-> 0, 0, 1

mysql>SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;

-> 1, 1, 0

為了能夠順利的使用ODBC程序工作,在使用IS NULL時,MySQL支持一下額外特性:

在一個值產(chǎn)生后,立即運行一個以下格式的語句,從而找到最新AUTO_INCREMENT值的所在行:

oSELECT * FROMtbl_nameWHEREauto_colIS NULL

當(dāng)設(shè)置SQL_AUTO_IS_NULL=0時,這項操作無法運行。

對于命名為NOT NULL的DATE和DATETIME列,可通過使用如下的 語句找到特定日期’0000-00-00’:

oSELECT * FROMtbl_nameWHEREdate_columnIS NULL

運行這一步需要使用一些ODBC應(yīng)用軟件,因為ODBC本身不支持 一個’0000-00-00’的時間值。

exprBETWEENminANDmax

假如expr大于或等于min且expr小于或等于max,則BETWEEN的返回值為1,或是0。若所有參數(shù)都是同一類型,則上述關(guān)系相當(dāng)于表達式 (min<=exprANDexpr<=max)。其它類型的轉(zhuǎn)換根據(jù)本章開篇所述規(guī)律進行,且適用于3種參數(shù)中任意一種。

mysql>SELECT 1 BETWEEN 2 AND 3;

-> 0

mysql>SELECT ’b’ BETWEEN ’a’ AND ’c’;

-> 1

mysql>SELECT 2 BETWEEN 2 AND ’3’;

-> 1

mysql>SELECT 2 BETWEEN 2 AND ’x-3’;

-> 0

exprNOT BETWEENminANDmax

這相當(dāng)于NOT(exprBETWEENminANDmax)。

· COALESCE(value,...)

返回值為列表當(dāng)中的第一個非NULL值,在沒有非NULL值得情況下返回值為NULL。

mysql>SELECT COALESCE(NULL,1);

-> 1

mysql>SELECT COALESCE(NULL,NULL,NULL);

-> NULL

· GREATEST(value1,value2,...)

當(dāng)有2或多個參數(shù)時,返回值為最大(最大值的)參數(shù)。比較參數(shù)所依據(jù)的規(guī)律同LEAST()相同。

mysql>SELECT GREATEST(2,0);

-> 2

mysql>SELECT GREATEST(34.0,3.0,5.0,767.0);

-> 767.0

mysql>SELECT GREATEST(’B’,’A’,’C’);

-> ’C’

在沒有自變量為NULL的情況下,GREATEST()的返回值為NULL。

·exprIN(value,...)

若expr為IN列表中的任意一個值,則其返回值為1 ,否則返回值為0。假如所有的值都是常數(shù),則其計算和分類根據(jù)expr的類型進行。這時,使用二分搜索來搜索信息。如IN值列表全部由常數(shù)組成,則意味著IN的速度非常之快。如expr是一個區(qū)分大小寫的字符串表達式,則字符串比較也按照區(qū)分大小寫的方式進行。

mysql>SELECT 2 IN (0,3,5,’wefwf’);

-> 0

mysql>SELECT ’wefwf’ IN (0,3,5,’wefwf’);

-> 1

IN列表中所列值的個數(shù)僅受限于max_allowed_packet值。

為了同SQL標(biāo)準(zhǔn)相一致,在左側(cè)表達式為NULL的情況下,或是表中找不到匹配項或是表中一個表達式為NULL的情況下,IN的返回值均為NULL。

IN()語構(gòu)也可用書寫某些類型的子查詢。

·exprNOT IN (value,...)

這與NOT (exprIN (value,...))相同。

ISNULL(expr)

如expr為NULL,那么ISNULL()的返回值為1,否則返回值為0。

mysql>SELECT ISNULL(1+1);

-> 0

mysql>SELECT ISNULL(1/0);

-> 1

使用=的NULL值對比通常是錯誤的。

ISNULL()函數(shù)同IS NULL比較操作符具有一些相同的特性。請參見有關(guān)IS NULL的說明。

· INTERVAL(N,N1,N2,N3,...)

假如N<N1,則返回值為0;假如N<N2等等,則返回值為1;假如N為NULL,則返回值為-1。所有的參數(shù)均按照整數(shù)處理。為了這個函數(shù)的正確運行,必須滿足N1<N2<N3<……<Nn。其原因是使用了二分查找(極快速)。

mysql>SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);

-> 3

mysql>SELECT INTERVAL(10, 1, 10, 100, 1000);

-> 2

mysql>SELECT INTERVAL(22, 23, 30, 44, 200);

-> 0

· LEAST(value1,value2,...)

在有兩個或多個參數(shù)的情況下, 返回值為最小(最小值)參數(shù)。用一下規(guī)則將自變量進行對比:

假如返回值被用在一個INTEGER語境中,或是所有參數(shù)均為整數(shù)值,則將其作為整數(shù)值進行比較。假如返回值被用在一個REAL語境中,或所有參數(shù)均為實值,則 將其作為實值進行比較。假如任意一個參數(shù)是一個區(qū)分大小寫的字符串,則將參數(shù)按照區(qū)分大小寫的字符串進行比較。在其它情況下,將參數(shù)作為區(qū)分大小寫的字符串進行比較。

假如任意一個自變量為NULL,則LEAST()的返回值為NULL。

mysql>SELECT LEAST(2,0);

-> 0

mysql>SELECT LEAST(34.0,3.0,5.0,767.0);

-> 3.0

mysql>SELECT LEAST(’B’,’A’,’C’);

-> ’A’

注意,上面的轉(zhuǎn)換規(guī)則在一些邊界情形中會產(chǎn)生一些奇特的結(jié)果:

mysql>SELECT CAST(LEAST(3600, 9223372036854775808.0) as SIGNED);

-> -9223372036854775808

發(fā)生這種情況的原因是MySQL在整數(shù)語境中讀取9223372036854775808.0。整數(shù)表示法不利于保存數(shù)值,因此它包括一個帶符號整數(shù)。

4.邏輯操作符

在SQL中,所有邏輯 操作符的求值所得結(jié)果均為TRUE、FALSE或NULL (UNKNOWN)。在MySQL中,它們體現(xiàn)為 1 (TRUE)、0 (FALSE)和NULL。其大多數(shù)都與不同的數(shù)據(jù)庫SQL通用,然而一些服務(wù)器對TRUE的返回值可能是任意一個非零值。

NOT !

邏輯NOT。當(dāng)操作數(shù)為0時,所得值為1;當(dāng)操作數(shù)為非零值時,所得值為 0,而當(dāng)操作數(shù)為NOT NULL時,所得的返回值為NULL。

mysql>SELECT NOT 10;

-> 0

mysql>SELECT NOT 0;

-> 1

mysql>SELECT NOT NULL;

-> NULL

mysql>SELECT ! (1+1);

-> 0

mysql>SELECT ! 1+1;

-> 1

最后一個例子產(chǎn)生的結(jié)果為1,原因是表達式的計算方式和(!1)+1相同。

AND &&

邏輯AND。當(dāng)所有操作數(shù)均為非零值、并且不為NULL時,計算所得結(jié)果為 1,當(dāng)一個或多個操作數(shù)為0時,所得結(jié)果為0,其余情況返回值為NULL。

mysql>SELECT 1 && 1;

-> 1

mysql>SELECT 1 && 0;

-> 0

mysql>SELECT 1 && NULL;

-> NULL

mysql>SELECT 0 && NULL;

-> 0

mysql>SELECT NULL && 0;

-> 0

OR ||

邏輯OR。當(dāng)兩個操作數(shù)均為非NULL值時,如有任意一個操作數(shù)為非零值,則結(jié)果為1,否則結(jié)果為0。當(dāng)有一個操作數(shù)為NULL時,如另一個操作數(shù)為非零值,則結(jié)果為1,否則結(jié)果為NULL。假如兩個操作數(shù)均為 NULL,則所得結(jié)果為NULL。

mysql>SELECT 1 || 1;

-> 1

mysql>SELECT 1 || 0;

-> 1

mysql>SELECT 0 || 0;

-> 0

mysql>SELECT 0 || NULL;

-> NULL

mysql>SELECT 1 || NULL;

-> 1

XOR

邏輯XOR。當(dāng)任意一個操作數(shù)為NULL時,返回值為NULL。對于非 NULL的操作數(shù),假如一個奇數(shù)操作數(shù)為非零值,則計算所得結(jié)果為 1,否則為 0。

mysql>SELECT 1 XOR 1;

-> 0

mysql>SELECT 1 XOR 0;

-> 1

mysql>SELECT 1 XOR NULL;

-> NULL

mysql>SELECT 1 XOR 1 XOR 1;

-> 1

a XOR b的計算等同于 (a AND (NOT b)) OR ((NOT a)和b)。

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品专区免费| 国产黄大片在线观看| 免费观看久久av| 在线视频精品| 视频一区免费在线观看| 日本一区二区三区视频在线看 | 亚洲精品美女| 欧美久久精品| 国产一区二区三区日韩精品| 色爱综合av| 免费人成精品欧美精品 | 欧美亚洲人成在线| 国产成人免费| 欧美另类专区| 欧美中文高清| 伊伊综合在线| 久久国产精品99国产| 中文字幕av一区二区三区人| 国产欧美一级| 久久香蕉国产| 日韩精品a在线观看91| 精品美女在线视频| 欧美日韩国产精品一区二区亚洲| 午夜电影一区| 高清久久一区| 女主播福利一区| 久久国产婷婷国产香蕉| 日韩欧美午夜| 日韩一区中文| 久久久久97| 日韩欧美国产精品综合嫩v| 亚洲精品va| 麻豆国产91在线播放| 亚洲黄色在线| 精品久久中文| 亚洲青青久久| 精品国模一区二区三区| 日韩精品福利一区二区三区| 日韩三区免费| 欧美日本不卡| 不卡专区在线| 亚洲免费资源| 久久精品av| 美国欧美日韩国产在线播放| 欧美国产小视频| 久久一二三区| 久久国产乱子精品免费女| 国产欧美日韩亚洲一区二区三区| 涩涩av在线| 日本aⅴ免费视频一区二区三区| 精品网站999| 亚洲2区在线| 亚洲成av人片一区二区密柚| 国产精品免费不| 夜夜嗨一区二区| 精品国产不卡| 日韩中文字幕av电影| 国产美女视频一区二区| 黄色亚洲在线| 国产精品jk白丝蜜臀av小说| 在线亚洲一区| 欧美专区一区| 美国三级日本三级久久99| 国产精品探花在线观看| 久久在线视频免费观看| 麻豆精品视频在线观看视频| 九色精品91| 精品三级久久久| 青草国产精品| 欧美日中文字幕| 国产欧美亚洲一区| 欧洲一级精品| 日韩在线电影| 最新国产精品视频| 日韩中文影院| 鲁大师精品99久久久| 亚洲精品国模| 久久久精品日韩| 国产精品大片免费观看| 亚洲三级av| 中文字幕在线免费观看视频| 欧美日韩1区2区3区| 亚洲欧美日韩一区在线观看| 九九久久国产| 欧美伊人久久| 亚洲区国产区| 成人精品动漫一区二区三区| 国产精品porn| 亚洲日本三级| 日韩亚洲精品在线| 蜜桃成人av| 四季av一区二区凹凸精品| 国产精品tv| 国产精品亚洲片在线播放| 亚洲精品1区| 激情久久久久久久| 国产精品久久久久蜜臀| 国产精品嫩草影院在线看| 日本aⅴ精品一区二区三区| 国产一级久久| 久久国产亚洲| 日本激情一区| 精品久久91| 欧美精品二区| 久久超级碰碰| 国产伦精品一区二区三区视频| 久久精品一区| 狠狠久久伊人中文字幕| 国产精品蜜月aⅴ在线| 国产精品综合色区在线观看| 亚洲一区二区毛片| 好看的亚洲午夜视频在线| 欧美午夜不卡| 99成人在线| 久久香蕉精品| 视频一区中文字幕| 99久精品视频在线观看视频| 欧美日韩在线观看视频小说| av高清不卡| 五月激情久久| 久久精品卡一| 婷婷激情久久| 自拍日韩欧美| 综合五月婷婷| 一区二区不卡| 国产剧情在线观看一区| 国产美女视频一区二区| 国产欧美一区二区三区米奇 | 午夜一区在线| 免费在线视频一区| 亚洲毛片一区| 日本一区福利在线| 国产精品美女午夜爽爽| 久久中文精品| 国产suv精品一区| 久久中文字幕av| 亚洲精品人人| 日韩激情一区二区| 精品免费视频| 久久亚洲专区| 免费看黄色91| 里番精品3d一二三区| 激情中国色综合| 亚洲一级二级| 欧美天堂在线| 国产丝袜一区| 99久久婷婷| 亚洲aa在线| 国产在线不卡一区二区三区 | 日韩国产精品久久久久久亚洲| 欧美精品1区| 日本午夜大片a在线观看| 午夜久久一区| 免费亚洲一区| 久久亚洲国产| 国产精品99久久久久久董美香| a日韩av网址| 欧美亚洲在线日韩| 欧美另类中文字幕| 国产福利91精品一区二区| 今天的高清视频免费播放成人| 日本国产一区| 黄色精品视频| 伊人精品久久| 中文字幕高清在线播放| 天堂成人国产精品一区| 风间由美中文字幕在线看视频国产欧美| 欧美日韩尤物久久| 日韩国产欧美在线视频| 在线日韩中文| 欧美日韩午夜| 免播放器亚洲| 日韩中文字幕视频网| 亚洲啊v在线| 国产精品xxx| 国产精品视区| 国产伦精品一区二区三区千人斩 | 欧美激情在线精品一区二区三区| 亚洲一级二级| 精品三区视频| 在线精品视频一区| 久久精品国产精品亚洲毛片| 不卡一区综合视频| 国产精品亚洲片在线播放| 波多野结衣一区| 久久免费精品| 亚洲一二三区视频| 国产综合婷婷| 国产乱码精品一区二区亚洲| 免费视频一区二区| 波多野结衣久久精品| 7777精品| 中文字幕av一区二区三区四区| 伊人久久视频| 日韩极品在线观看| 99视频+国产日韩欧美| 91成人精品在线| 亚洲精品国产精品粉嫩| 亚洲午夜在线| 日韩中文欧美|