SQL中的等號(=)、IN、LIKE三者的比較。
SQL 中等號、IN、LIKE 三者都可以用來進行數據匹配 。但三者並不相同。
等號(=):是用來查找與單個值匹配的所有數據;
IN :是 用來查找 與多個值匹配的所有數據;
LIKE:用來查找與一個模式匹配的所有數據。
一、等號(=)
確切知道所要查找的內容,且爲單一值時,可以使用等號運算符來進行數據比較。等號運算符中可以使用字符串、日期或數字。例如,比如想要查詢字段爲name,值爲“MTbaby”的工作人員,可以使用等號進行匹配:
SELECT name, sex, id, salary FROM table_name WHERE name='MTbaby';
查詢結果:
name | sex | id | salary |
---|---|---|---|
MTbaby | 女 | 1001 | 3000.00 |
二、IN
當確切知道所要查找的內容,且爲多個值時,可以使用 IN 子句來進行數據比較。IN 子句中也可以使用數字、字符串或日期。例如,查找名爲“MTbaby”、“abboter”、“小明”的工作人員,可以使用 IN 子句進行匹配:
SELECT name, sex, id, salary FROM table_name WHERE name IN ("MTbaby","abboter","小明");
查詢結果:
name | sex | id | salary |
---|---|---|---|
MTbaby | 女 | 1001 | 3000.00 |
abboter | 男 | 1002 | 5000.00 |
小明 | 男 | 1003 | 4000.00 |
另外:如果a.depart=”” or a.depart=”“…這個鏈接條件很多的話, 會存在效率問題, 此時IN的優勢會體現出來; 查看下執行計劃能夠更詳細的分析出你想要的結果;
三、LIKE 子句
當無法確切知道所要查找的值,而是知道所要查找的數據符合的模式時,可以使用LIKE 子句進行匹配。一般來說,LIKE 子句僅在字符串類型時使用,有些系統也支持在日期數據中使用,但對數字類型數據是不能使用 LIKE 子句的。例如,查找名字中都包含漢字“明”的工作人員,可以使用 LIKE 子句進行匹配:
SELECT name, sex, id, salary FROM table_name WHERE name LIKE '%明%';
查詢結果:
name | sex | id | salary |
---|---|---|---|
劉明 | 女 | 1005 | 3000.00 |
王明親 | 男 | 1007 | 5000.00 |
需要注意的是,通配符只有在 LIKE 子句中使用時才具有通配符的含義。不在 LIKE子句中使用時, 就不具有特殊的含義,僅表示其本身的值。
如果我把上述LIKE語句改成下面這個:
SELECT name, sex, id, salary FROM table_name WHERE name = '%明%';
則查詢結果爲空:
name | sex | id | salary |
---|---|---|---|