使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

在此博客中,我們將討論如何在 SQL 中進行過濾。我們將解釋並展示一些使用過濾條件的示例,例如IN、NOT IN、LIKENOT LIKE

這些過濾條件用於過濾數據的輸出。無需使用多行命令來選擇它們,您可以更輕鬆地訪問數據。

目錄

使用 IN 和 NOT IN 運算符在 SQL 中過濾數據

在此示例中,我們將從 ID 1、5 或 7 獲取數據。大多數人會使用OR 條件

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

如果你想從更多的 ID 中獲取數據,你將不得不編寫多個 OR 條件。但是,您可以使用IN 運算符來獲取您想要的數據,而不是多次使用OR 條件。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

使用這個過濾條件會得到相同的輸出,即ID為1、5或7的數據。相反,如果你想提取除ID 1、5、7以外的所有數據,你將最可能使用OR 條件<>(不等於運算符)。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

我們可以使用NOT IN 運算符,而不是編寫長命令。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

使用此篩選條件,您將提取 ID 1、5 和 7 以外的數據。

使用這些條件將為您節省大量時間,同時,是一種比使用多個OR 條件更好的編寫方式。

使用 LIKE 和 NOT LIKE 運算符在 SQL 中過濾數據

LIKENOT LIKE類似於IN和 NOT IN 運算符。它不會提取數據本身,而是獲取字符串的一部分。請記住,您可以使用通配符特殊字符,例如百分比 (%) 和下劃線 (_)。

%表示它將匹配具有給定字符串的所有記錄如果我們匹配 86 和 %,前兩位數字應該是 86。因此,它會找到任何以 86 開頭的值。

但是如果我們把 % 放在 86 的兩邊,它可以來自任何位置。它可以來自開頭、結尾或中間。因此,它會找到任何在開頭、中間或結尾處有 86 的值。 

另一方面,_只匹配一個字符。如果您使用 86 和_ (86_),它將查找在第一個和第二個位置上具有 86 的任何值,例如 860、861、862 等等。如果您使用 _ 和 86 (_86),它會在第 2 和第 3 個位置查找任何具有 86 的值。 

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

在此示例中,我們將使用LIKE 運算符獲取包含字符串Mark的數據。我們只需要將Mark放在 % 之間以獲得包含Mark 的輸出。 

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

同樣,如果我們不想提取包含Mark 的數據,我們可以使用NOT LIKE 運算符。然後把Mark放在 % 之間。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

這一次,輸出將不包含Mark

在 SSMS 中使用 SQL 過濾條件

首先,我們將打開我們的SSMS (SQL Server Management Studio)。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

接下來,我們將加載我們將要使用的表。請注意,我們使用的數據庫是 adventureworks2012,可以在Microsoft 文檔網站上找到。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

然後,單擊執行

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

之後,您將在“結果”選項卡上看到輸出。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

然後,我們將根據PersonType過濾輸出。我們將使用select distinct命令。我們將突出顯示該命令並單擊Execute

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

然後您將看到顯示PersonType 的輸出。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

接下來,我們將從PersonType INSPSC中提取記錄。對於這一個,我們將使用OR 條件。我們將突出顯示該命令,然後單擊執行

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

然後您會看到行數是 19,254。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

但是,我們不使用OR 條件,而是使用IN 運算符。因此,我們將鍵入命令並突出顯示它。然後點擊執行

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

這將為我們提供相同數量的行,即19,254

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

如果我們想要提取除INSPSC之外的所有數據,我們將使用NOT IN 運算符。所以讓我們輸入命令並突出顯示它。然後點擊執行

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

這將為我們提供除來自INSPSC的數據之外的所有數據。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

接下來,我們將使用LIKE 運算符FirstName列中提取包含Rob 的數據。讓我們使用該命令,突出顯示它,然後單擊Execute

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

結果,我們將看到輸出現在在FirstName列中包含Rob。由於我們使用了%,它將顯示所有具有字符串Rob的數據。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

最後,我們將使用NOT LIKE 運算符。在此示例中,我們要提取不包含Rob 的數據。因此,我們將鍵入代碼,突出顯示它,然後單擊“執行”。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

這將為我們提供不顯示FirstName列中包含Rob 的任何記錄的輸出。

使用 IN、NOT IN、LIKE 和 NOT LIKE 在 SQL 中過濾

結論

總而言之,我們已經討論瞭 如何使用IN、NOT IN、LIKENOT LIKE 運算符在 SQL 中進行過濾。您已經了解了它們的用法和區別,以及在什麼情況下可以使用它們。

這些運算符比使用OR 條件更有效。您可以使用這些運算符從數據庫中過濾和提取所需的數據,而不是使用更長的命令,因此請確保正確使用這些過濾條件。

一切順利,

哈菲茲


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的