欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL算術(shù)/比較/邏輯/位/運(yùn)算符與正則舉例詳解

 更新時(shí)間:2023年02月15日 09:38:51   作者:timerring  
每種數(shù)據(jù)庫(kù)都支持SQL語(yǔ)句,但是它們也都有各自支持的運(yùn)算符,下面這篇文章主要給大家介紹了關(guān)于MySQL算術(shù)/比較/邏輯/位/運(yùn)算符與正則的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 算術(shù)運(yùn)算符

算術(shù)運(yùn)算符主要用于數(shù)學(xué)運(yùn)算,其可以連接運(yùn)算符前后的兩個(gè)數(shù)值或表達(dá)式,對(duì)數(shù)值或表達(dá)式進(jìn)行加(+)、減(-)、乘(*)、除(/)和取模(%)運(yùn)算。

加法與減法運(yùn)算符

SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5
FROM dual;

在Java中,+的左右兩邊如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示數(shù)值相加。如果遇到非數(shù)值類(lèi)型,先嘗試轉(zhuǎn)成數(shù)值,如果轉(zhuǎn)失敗,就按0計(jì)算。

MySQL 中字符串拼接要使用字符串函數(shù) CONCAT() 實(shí)現(xiàn)

乘法與除法運(yùn)算符

SELECT 100, 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,100 + 2 * 5 / 2,100 /3, 100 DIV 0 FROM dual;

  • 一個(gè)數(shù)除以整數(shù)后,不管是否能除盡,結(jié)果都為一個(gè)浮點(diǎn)數(shù);
  • 一個(gè)數(shù)除以另一個(gè)數(shù),除不盡時(shí),結(jié)果為一個(gè)浮點(diǎn)數(shù),并保留到小數(shù)點(diǎn)后4位;
  • 在數(shù)學(xué)運(yùn)算中,0不能用作除數(shù),在MySQL中,一個(gè)數(shù)除以0為NULL。

求模(求余)運(yùn)算符

將t22表中的字段i對(duì)3和5進(jìn)行求模(求余)運(yùn)算。

SELECT 12 % 3, 12 MOD 5 FROM dual;

案例:

#篩選出employee_id是偶數(shù)的員工
SELECT * FROM employees
WHERE employee_id MOD 2 = 0;

2. 比較運(yùn)算符

比較運(yùn)算符用來(lái)對(duì)表達(dá)式左邊的操作數(shù)和右邊的操作數(shù)進(jìn)行比較,比較的結(jié)果為真則返回1,比較的結(jié)果為假則返回0,其他情況則返回NULL。

比較運(yùn)算符經(jīng)常被用來(lái)作為SELECT查詢(xún)語(yǔ)句的條件來(lái)使用,返回符合條件的結(jié)果記錄。

等號(hào)運(yùn)算符

  • 等號(hào)運(yùn)算符(=)判斷等號(hào)兩邊的值、字符串或表達(dá)式是否相等,如果相等則返回1,不相等則返回 0。
  • 在使用等號(hào)運(yùn)算符時(shí),遵循如下規(guī)則:
    • 如果等號(hào)兩邊的值、字符串或表達(dá)式都為字符串,則MySQL會(huì)按照字符串進(jìn)行比較,其比較的是每個(gè)字符串中字符的ANSI編碼是否相等。
    • 如果等號(hào)兩邊的值都是整數(shù),則MySQL會(huì)按照整數(shù)來(lái)比較兩個(gè)值的大小。
    • 如果等號(hào)兩邊的值一個(gè)是整數(shù),另一個(gè)是字符串,則MySQL會(huì)將字符串轉(zhuǎn)化為數(shù)字進(jìn)行比較。如果字符串不能隱式地轉(zhuǎn)為數(shù)字,則會(huì)等價(jià)數(shù)字0。
    • 如果等號(hào)兩邊的值、字符串或表達(dá)式中有一個(gè)為NULL,則比較結(jié)果為NULL。
  • 對(duì)比:SQL中賦值符號(hào)使用 :=
SELECT 1 = 1, 1 = '1', 1 = 0, 'a' = 'a', (5 + 3) = (2 + 6), '' = NULL , NULL = NULL;

安全等于運(yùn)算符

安全等于運(yùn)算符(<=>)與等于運(yùn)算符(=)的作用是相似的, 唯一的區(qū)別是‘<=>’可以用來(lái)對(duì)NULL進(jìn)行判斷

  • 在兩個(gè)操作數(shù)均為NULL時(shí),其返回值為1,而不為NULL;
  • 當(dāng)一個(gè)操作數(shù)為NULL時(shí),其返回值為0,而不為NULL。
SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (5 + 3) <=> (2 + 6), '' <=> NULL,NULL <=> NULL FROM dual;

不等于運(yùn)算符

不等于運(yùn)算符(<>和!=)用于判斷兩邊的數(shù)字、字符串或者表達(dá)式的值是否不相等.

  • 如果不相等則返回1,相等則返回0。
  • 等于運(yùn)算符不能判斷NULL值。如果兩邊的值有任意一個(gè)為NULL,或兩邊都為NULL,則結(jié)果為NULL。

SQL語(yǔ)句示例如下:

SELECT 1 <> 1, 1 != 2, 'a' != 'b', (3+4) <> (2+6), 'a' != NULL, NULL <> NULL;

非符號(hào)類(lèi)型的運(yùn)算符

空運(yùn)算符

空運(yùn)算符(IS NULL或者ISNULL)判斷一個(gè)值是否為NULL

  • 如果為NULL則返回1,否則返回0。

SQL語(yǔ)句示例如下:

SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;

示例:

#查詢(xún)commission_pct等于NULL。比較如下的四種寫(xiě)法
SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE ISNULL(commission_pct);

非空運(yùn)算符

非空運(yùn)算符(IS NOT NULL)判斷一個(gè)值是否不為NULL。

  • 如果不為NULL則返回1,否則返回0。

SQL語(yǔ)句示例如下:

SELECT NULL IS NOT NULL, 'a' IS NOT NULL, 1 IS NOT NULL;

示例:

#查詢(xún)commission_pct不等于NULL
SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NOT NULL;
SELECT employee_id,commission_pct FROM employees WHERE NOT commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE NOT ISNULL(commission_pct);

最小值運(yùn)算符

語(yǔ)法格式為:LEAST(值1,值2,…,值n)。其中,“值n”表示參數(shù)列表中有n個(gè)值。在有兩個(gè)或多個(gè)參數(shù)的情況下,返回最小值。

  • 當(dāng)參數(shù)是整數(shù)或者浮點(diǎn)數(shù)時(shí),LEAST將返回其中最小的值;
  • 當(dāng)參數(shù)為字符串時(shí),返回字母表中順序最靠前的字符;
  • 當(dāng)比較值列表中有NULL時(shí),不能判斷大小,返回值為NULL;
SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);

由結(jié)果可以看到,當(dāng)參數(shù)是整數(shù)或者浮點(diǎn)數(shù)時(shí),LEAST將返回其中最小的值;當(dāng)參數(shù)為字符串時(shí),返回字母表中順序最靠前的字符;當(dāng)比較值列表中有NULL時(shí),不能判斷大小,返回值為NULL。

最大值運(yùn)算符

語(yǔ)法格式為:GREATEST(值1,值2,…,值n)。其中,n表示參數(shù)列表中有n個(gè)值。當(dāng)有兩個(gè)或多個(gè)參數(shù)時(shí),返回值為最大值。

  • 當(dāng)參數(shù)中是整數(shù)或者浮點(diǎn)數(shù)時(shí),GREATEST將返回其中最大的值;
  • 當(dāng)參數(shù)為字符串時(shí),返回字母表中順序最靠后的字符;
  • 當(dāng)比較值列表中有NULL時(shí),不能判斷大小,返回值為NULL。
SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2);

BETWEEN AND運(yùn)算符

BETWEEN運(yùn)算符使用的格式通常為SELECT D FROM TABLE WHERE C BETWEEN A AND B,此時(shí),當(dāng)C大于或等于A,并且C小于或等于B時(shí),結(jié)果為1,否則結(jié)果為0。注意是閉區(qū)間。

SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c';

IN運(yùn)算符

IN運(yùn)算符用于判斷給定的值是否是IN列表中的一個(gè)值。

  • 如果是則返回1,否則返回0。
  • 如果給定的值為NULL,或者IN列表中存在NULL,則結(jié)果為NULL。
SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);

NOT IN運(yùn)算符

NOT IN運(yùn)算符用于判斷給定的值是否不是IN列表中的一個(gè)值。

  • 如果不是IN列表中的一個(gè)值,則返回1,否則返回0。
SELECT 'a' NOT IN ('a','b','c'), 1 NOT IN (2,3);

LIKE運(yùn)算符

LIKE運(yùn)算符主要用來(lái)匹配字符串,通常用于模糊匹配。

  • 如果滿(mǎn)足條件則返回1,否則返回0。
  • 如果給定的值或者匹配條件為NULL,則返回結(jié)果為NULL。

LIKE運(yùn)算符通常使用如下通配符:

“%”:匹配0個(gè)或多個(gè)字符。
“_”:只能匹配一個(gè)字符。

SQL語(yǔ)句示例如下:

SELECT NULL LIKE 'abc', 'abc' LIKE NULL;

SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';

SELECT last_name
FROM employees
WHERE last_name LIKE '_o%';

ESCAPE

回避特殊符號(hào)的:使用轉(zhuǎn)義符。例如:將[%]轉(zhuǎn)為[ %]、[]轉(zhuǎn)為[ ],然后再加上[ESCAPE‘$’]即可。

# 這里采用了\表示轉(zhuǎn)義
SELECT job_id
FROM jobs
WHERE job_id LIKE ‘IT\_%‘;

如果使用\表示轉(zhuǎn)義,要省略ESCAPE。如果不是\,則要加上ESCAPE。

# 這里采用了ESCAPE轉(zhuǎn)義
SELECT job_id
FROM jobs
WHERE job_id LIKE ‘IT$_%‘ escape ‘$‘;

REGEXP運(yùn)算符

REGEXP運(yùn)算符用來(lái)匹配字符串,語(yǔ)法格式為: expr REGEXP 匹配條件。

  • 如果expr滿(mǎn)足匹配條件,返回1;如果不滿(mǎn)足,則返回0。
  • 若expr或匹配條件任意一個(gè)為NULL,則結(jié)果為NULL。

REGEXP運(yùn)算符在進(jìn)行匹配時(shí),常用的有下面幾種通配符:

(1)‘^’匹配以該字符后面的字符開(kāi)頭的字符串。
(2)‘$’匹配以該字符前面的字符結(jié)尾的字符串。
(3)‘.’匹配任何一個(gè)單字符。
(4)“[...]”匹配在方括號(hào)內(nèi)的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。為了命名字符的范圍,使用一
個(gè)‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何數(shù)字。
(5)‘*’匹配零個(gè)或多個(gè)在它前面的字符。例如,“x*”匹配任何數(shù)量的‘x’字符,“[0-9]*”匹配任何數(shù)量的數(shù)字,
而“*”匹配任何數(shù)量的任何字符。

SQL語(yǔ)句示例如下:

SELECT 'timerring' REGEXP '^t', 'timerring' REGEXP 'g$', 'timerring' REGEXP 'rr';

3. 邏輯運(yùn)算符

邏輯運(yùn)算符主要用來(lái)判斷表達(dá)式的真假,在MySQL中,邏輯運(yùn)算符的返回結(jié)果為1、0或者NULL。

MySQL中支持4種邏輯運(yùn)算符如下:

邏輯非運(yùn)算符

邏輯非(NOT或!)運(yùn)算符表示當(dāng)給定的值為0時(shí)返回1;當(dāng)給定的值為非0值時(shí)返回0;當(dāng)給定的值為NULL時(shí),返回NULL。

SELECT NOT 1, NOT 0, NOT(1+1), NOT !1, NOT NULL;

示例

SELECT last_name, job_id
FROM employees
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');

邏輯與運(yùn)算符

邏輯與(AND或&&)運(yùn)算符是

  • 當(dāng)給定的所有值均為非0值,并且都不為NULL時(shí),返回1;
  • 當(dāng)給定的一個(gè)值或者多個(gè)值為0時(shí)則返回0;
  • 否則返回NULL。
SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL;

邏輯或運(yùn)算符

邏輯或(OR或||)運(yùn)算符是

  • 當(dāng)給定的值都不為NULL,并且任何一個(gè)值為非0值時(shí),則返回1,否則返回0;
  • 當(dāng)一個(gè)值為NULL,并且另一個(gè)值為非0值時(shí),返回1,
  • 否則返回NULL;當(dāng)兩個(gè)值都為NULL時(shí),返回NULL。
SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL;

示例:

SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';

注意:

OR可以和AND一起使用,但是在使用時(shí)要注意兩者的優(yōu)先級(jí),由于AND的優(yōu)先級(jí)高于OR,因此先
對(duì)AND兩邊的操作數(shù)進(jìn)行操作,再與OR中的操作數(shù)結(jié)合。

邏輯異或運(yùn)算符

邏輯異或(XOR)運(yùn)算符是當(dāng)

  • 給定的值中任意一個(gè)值為NULL時(shí),則返回NULL;
  • 如果兩個(gè)非NULL的值都是0或者都不等于0時(shí),則返回0;
  • 如果一個(gè)值為0,另一個(gè)值不為0時(shí),則返回1。
SELECT 1 XOR -1, 1 XOR 0, 0 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0;

示例:

select last_name,department_id,salary
from employees
where department_id in (10,20) XOR salary > 8000;

4. 位運(yùn)算符

位運(yùn)算符是在二進(jìn)制數(shù)上進(jìn)行計(jì)算的運(yùn)算符。位運(yùn)算符會(huì)先將操作數(shù)變成二進(jìn)制數(shù),然后進(jìn)行位運(yùn)算,最后將計(jì)算結(jié)果從二進(jìn)制變回十進(jìn)制數(shù)。

MySQL支持的位運(yùn)算符如下:

按位與運(yùn)算符

按位與(&)運(yùn)算符將給定值對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯與運(yùn)算。

  • 當(dāng)給定值對(duì)應(yīng)的二進(jìn)制位的數(shù)值都為1時(shí),則該位返回1,否則返回0。
# 1的二進(jìn)制數(shù)為0001,10的二進(jìn)制數(shù)為1010,所以1 & 10的結(jié)果為0000,對(duì)應(yīng)的十進(jìn)制數(shù)為0。
# 20的二進(jìn)制數(shù)為10100,30的二進(jìn)制數(shù)為11110,所以20 & 30的結(jié)果為10100,對(duì)應(yīng)的十進(jìn)制數(shù)為20。
SELECT 1 & 10, 20 & 30;

按位或運(yùn)算符

按位或(|)運(yùn)算符將給定的值對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯或運(yùn)算。

  • 當(dāng)給定值對(duì)應(yīng)的二進(jìn)制位的數(shù)值有一個(gè)或兩個(gè)為1時(shí),則該位返回1,否則返回0。
# 1的二進(jìn)制數(shù)為0001,10的二進(jìn)制數(shù)為1010,所以1 ^ 10的結(jié)果為1011,對(duì)應(yīng)的十進(jìn)制數(shù)為11。
# 20的二進(jìn)制數(shù)為10100,30的二進(jìn)制數(shù)為11110,所以20 ^ 30的結(jié)果為01010,對(duì)應(yīng)的十進(jìn)制數(shù)為10。
SELECT 1 ^ 10, 20 ^ 30;

按位異或運(yùn)算符

按位異或(^)運(yùn)算符將給定的值對(duì)應(yīng)的二進(jìn)制數(shù)逐位進(jìn)行邏輯異或運(yùn)算。

  • 當(dāng)給定值對(duì)應(yīng)的二進(jìn)制位的數(shù)值不同時(shí),則該位返回1,否則返回0。
# 1的二進(jìn)制數(shù)為0001,10的二進(jìn)制數(shù)為1010,所以1 ^ 10的結(jié)果為1011,對(duì)應(yīng)的十進(jìn)制數(shù)為11。
# 20的二進(jìn)制數(shù)為10100,30的二進(jìn)制數(shù)為11110,所以20 ^ 30的結(jié)果為01010,對(duì)應(yīng)的十進(jìn)制數(shù)為10。
SELECT 1 ^ 10, 20 ^ 30;

示例:

SELECT 12 & 5, 12 | 5,12 ^ 5 FROM DUAL;

按位取反運(yùn)算符

按位取反(~)運(yùn)算符將給定的值的二進(jìn)制數(shù)逐位進(jìn)行取反操作,即將1變?yōu)?,將0變?yōu)?。

# 由于按位取反(~)運(yùn)算符的優(yōu)先級(jí)高于按位與(&)運(yùn)算符的優(yōu)先級(jí),所以10 & ~1,首先,對(duì)數(shù)字1進(jìn)行按位取反操作,結(jié)果除了最低位為0,其他位都為1,然后與10進(jìn)行按位與操作,結(jié)果為10。
SELECT 10 & ~1;

按位右移運(yùn)算符

按位右移(>>)運(yùn)算符將給定的值的二進(jìn)制數(shù)的所有位右移指定的位數(shù)。

右移指定的位數(shù)后,右邊低位的數(shù)值被移出并丟棄,左邊高位空出的位置用0補(bǔ)齊。

# 1的二進(jìn)制數(shù)為0000 0001,右移2位為0000 0000,對(duì)應(yīng)的十進(jìn)制數(shù)為0。
# 4的二進(jìn)制數(shù)為0000 0100,右移2位為0000 0001,對(duì)應(yīng)的十進(jìn)制數(shù)為1。
SELECT 1 >> 2, 4 >> 2;

按位左移運(yùn)算符

按位左移(<<)運(yùn)算符將給定的值的二進(jìn)制數(shù)的所有位左移指定的位數(shù)。左移指定的位數(shù)后,左邊高位的數(shù)值被移出并丟棄,右邊低位空出的位置用0補(bǔ)齊。

SELECT 1 << 2, 4 << 2;

5. 運(yùn)算符的優(yōu)先級(jí)

數(shù)字編號(hào)越大,優(yōu)先級(jí)越高,優(yōu)先級(jí)高的運(yùn)算符先進(jìn)行計(jì)算??梢钥吹剑x值運(yùn)算符的優(yōu)先級(jí)最低,使用“()”括起來(lái)的表達(dá)式的優(yōu)先級(jí)最高。

拓展:使用正則表達(dá)式查詢(xún)

正則表達(dá)式通常被用來(lái)檢索或替換那些符合某個(gè)模式的文本內(nèi)容,根據(jù)指定的匹配模式匹配文本中符合要求的特殊字符串。

例如,從一個(gè)文本文件中提取電話(huà)號(hào)碼,查找一篇文章中重復(fù)的單詞或者替換用戶(hù)輸入的某些敏感詞語(yǔ)等,這些地方都可以使用正則表達(dá)式。正則表達(dá)式強(qiáng)大而且靈活,可以應(yīng)用于非常復(fù)雜的查詢(xún)。

MySQL中使用REGEXP關(guān)鍵字指定正則表達(dá)式的字符匹配模式。下表列出了REGEXP操作符中常用字符匹配列表。

查詢(xún)以特定字符或字符串開(kāi)頭的記錄

字符‘^’匹配以特定字符或者字符串開(kāi)頭的文本。

在fruits表中,查詢(xún)f_name字段以字母‘b’開(kāi)頭的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP '^b';

查詢(xún)以特定字符或字符串結(jié)尾的記錄

字符‘$’匹配以特定字符或者字符串結(jié)尾的文本。

在fruits表中,查詢(xún)f_name字段以字母‘y’結(jié)尾的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP 'y$';

用符號(hào)"."來(lái)替代字符串中的任意一個(gè)字符

字符‘.’匹配任意一個(gè)字符。 在fruits表中,查詢(xún)f_name字段值

包含字母‘a’與‘g’且兩個(gè)字母之間只有一個(gè)字母的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP 'a.g';

使用"*“和”+"來(lái)匹配多個(gè)字符

星號(hào)‘*’匹配前面的字符任意多次,包括0次。加號(hào)‘+’匹配前面的字符至少一次。

在fruits表中,查詢(xún)f_name字段值以字母‘b’開(kāi)頭且‘b’后面出現(xiàn)字母‘a’的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP '^ba*'; # 任意多次包括0次
SELECT * FROM fruits WHERE f_name REGEXP '^ba+'; # 至少一次

匹配指定字符串

正則表達(dá)式可以匹配指定字符串,只要這個(gè)字符串在查詢(xún)文本中即可,如要匹配多個(gè)字符串,多個(gè)字符串之間使用分隔符‘|’隔開(kāi)。

在fruits表中,查詢(xún)f_name字段值包含字符串“on”的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP 'on';

在fruits表中,查詢(xún)f_name字段值包含字符串“on”或者“ap”的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP 'on|ap';

之前介紹過(guò),LIKE運(yùn)算符也可以匹配指定的字符串,

  • 但與REGEXP不同,LIKE匹配的字符串如果在文本中間出現(xiàn),則找不到它,相應(yīng)的行也不會(huì)返回。
  • REGEXP在文本內(nèi)進(jìn)行匹配,如果被匹配的字符串在文本中出現(xiàn),REGEXP將會(huì)找到它,相應(yīng)的行也會(huì)被返回。對(duì)比結(jié)果如下所示。

在fruits表中,使用LIKE運(yùn)算符查詢(xún)f_name字段值為“on”的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name like 'on';# Empty set(0.00 sec)

匹配指定字符中的任意一個(gè)

方括號(hào)“[]”指定一個(gè)字符集合,只匹配其中任何一個(gè)字符,即為所查找的文本。

在fruits表中,查找f_name字段中包含字母‘o’或者‘t’的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP '[ot]';

匹配指定字符以外的字符

“[^字符集合]” 匹配不在指定集合中的任何字符。

在fruits表中,查詢(xún)f_id字段中包含字母ae和數(shù)字12以外字符的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1-2]';

使用{n,}或者{n,m}來(lái)指定字符串連續(xù)出現(xiàn)的次數(shù)

“字符串{n,}”表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。

在fruits表中,查詢(xún)f_name字段值出現(xiàn)字符串“ba”最少1次、最多3次的記錄,SQL語(yǔ)句如下:

SELECT * FROM fruits WHERE f_name REGEXP 'ba{1,3}';

練習(xí)題

1.選擇工資不在5000到12000的員工的姓名和工資

SELECT last_name, salary
FROM employees
WHERE salary NOT BETWEEN 5000 and 12000;

2.選擇在20或50號(hào)部門(mén)工作的員工姓名和部門(mén)號(hào)

SELECT last_name, department_id
FROM employees
WHERE department_id IN (20, 50);

3.選擇公司中沒(méi)有管理者的員工姓名及job_id

SELECT last_name, job_id
FROM employees
WHERE manager_id IS NULL;

4.選擇公司中有獎(jiǎng)金的員工姓名,工資和獎(jiǎng)金級(jí)別

SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;

5.選員工姓名的第三個(gè)字母是a的員工姓名

SELECT last_name
FROM employees
WHERE last_name LIKE '__a%';

6.選擇姓名中有字母a和k的員工姓名

SELECT last_name
FROM employees
WHERE last_name LIKE '%a%k%' OR last_name LIKE '%k%a%';
# 注意這里OR前后要寫(xiě)完整的語(yǔ)句。只寫(xiě)WHERE last_name LIKE '%a%k%' OR LIKE '%k%a%';是錯(cuò)的

7.顯示出表 employees 表中 first_name 以 'e’結(jié)尾的員工信息

SELECT employee_id,first_name,last_name
FROM employees
WHERE first_name LIKE '%e';
SELECT employee_id,first_name,last_name
FROM employees
WHERE first_name REGEXP 'e$';

8.顯示出表 employees 部門(mén)編號(hào)在 80-100 之間的姓名、工種

SELECT last_name,job_id
FROM employees
WHERE department_id BETWEEN 80 AND 100;

9.顯示出表 employees 的 manager_id 是 100,101,110 的員工姓名、工資、管理者id

SELECT last_name,salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 110);

總結(jié)

到此這篇關(guān)于MySQL算術(shù)/比較/邏輯/位/運(yùn)算符與正則舉例的文章就介紹到這了,更多相關(guān)MySQL算術(shù)比較邏輯位運(yùn)算符正則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論