亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

SQL IN & BETWEEN 運(yùn)算符

在本教程中,您將學(xué)習(xí)如何使用 IN 和 BETWEEN運(yùn)算符并與WHERE子句一起使用。

使用范圍和成員資格條件

在上一章中,我們學(xué)習(xí)了如何使用AND和OR運(yùn)算符組合多個(gè)條件。但是,有時(shí)這是不夠的,例如,如果您必須檢查位于一個(gè)范圍或一組值中的值。

這里出現(xiàn)了IN和BETWEEN操作符,它允許您定義一個(gè)獨(dú)占范圍或一組值,而不是組合單獨(dú)的條件。

IN運(yùn)算符

IN運(yùn)算符是邏輯運(yùn)算符,用于檢查一組值中是否存在特定值。 其基本語(yǔ)法可以通過(guò)以下方式給出:

SELECT column_list FROM table_name
WHERE column_name IN (value1, value1,...);

在這里,column_list是要獲取其值的數(shù)據(jù)庫(kù)表的列/字段的名稱(chēng),例如name,agecountry等。好吧,讓我們看看一些實(shí)例。

考慮我們?cè)跀?shù)據(jù)庫(kù)中有一個(gè)employees表,該表具有以下記錄:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

以下SQL語(yǔ)句將僅返回dept_id為1或3的那些雇員。

SELECT * FROM employees
WHERE dept_id IN (1, 3);

執(zhí)行查詢(xún)后,您將獲得如下結(jié)果集:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

同樣,您可以使用NOT IN運(yùn)算符,則該運(yùn)算符與IN運(yùn)算符完全相反。以下SQL語(yǔ)句將返回除dept_id不是1或3的那些雇員以外的所有雇員。

SELECT * FROM employees
WHERE dept_id NOT IN (1, 3);

執(zhí)行查詢(xún)后,這次您將獲得如下結(jié)果集:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

BETWEEN 運(yùn)算符

如果列中的值落在特定范圍內(nèi),有時(shí)您想選擇一行。處理數(shù)字?jǐn)?shù)據(jù)時(shí),這種類(lèi)型的條件很常見(jiàn)。

要基于這種條件執(zhí)行查詢(xún),您可以利用BETWEEN運(yùn)算符。它是一個(gè)邏輯運(yùn)算符,可讓您指定要測(cè)試的范圍,如下所示:

SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;

讓我們根據(jù)雇員(employees)表上的范圍條件構(gòu)建和執(zhí)行查詢(xún)。

定義數(shù)值范圍

以下SQL語(yǔ)句將僅返回employees表中薪水在7000到9000之間的那些雇員。

SELECT * FROM employees WHERE salary BETWEEN 7000 AND 9000;

執(zhí)行后,您將獲得如下輸出:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

定義日期范圍

將BETWEEN運(yùn)算符與日期或時(shí)間值一起使用時(shí),請(qǐng)使用CAST()函數(shù)將這些值顯式轉(zhuǎn)換為所需的數(shù)據(jù)類(lèi)型,以獲得最佳結(jié)果。例如,如果在與DATE的比較中使用諸如“ 2016-12-31”之類(lèi)的字符串,則將其轉(zhuǎn)換為DATE,如下所示:

以下SQL語(yǔ)句選擇2006年1月1日(即“ 2006-01-01”)至2016年12月31日(即“ 2016-12-31”)之間雇用的所有雇員:

SELECT * FROM employees WHERE hire_date
BETWEEN CAST('2006-01-01' AS DATE) AND CAST('2016-12-31' AS DATE);

執(zhí)行查詢(xún)后,您將獲得如下結(jié)果集:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

定義字符串范圍

雖然日期和數(shù)字范圍是最常見(jiàn)的,但您也可以建立條件來(lái)搜索字符串范圍。以下SQL語(yǔ)句選擇名稱(chēng)以“ O”和“ Z”之間的任何字母開(kāi)頭的所有雇員:

SELECT * FROM employees
WHERE emp_name BETWEEN 'O' AND 'Z';

執(zhí)行后,您將獲得如下輸出:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+