ISNULL SQL 函數 Case 語句

ISNULL SQL 函數 Case 語句

在此博客中,我們將討論可用於處理多個邏輯操作的CASE語句。我們還將討論ISNULL SQL 函數,它允許您在存在具有NULL值的表達式時返回替換值。

CASE語句和ISNULL函數在處理需要大量邏輯操作的代碼以及快速將固定值或指定值替換為表達式時非常有幫助

SQL 中的 CASE語句類似於使用IF ELSE語句。但是,它很可能類似於我們在DAX中使用的SWITCH語句。另一方面,ISNULL函數用於將NULL值替換為您要使用的特定值。

目錄

在 SQL 中使用 CASE 語句

假設我們有ProductNameSales Amount列。

ISNULL SQL 函數 Case 語句

然後我們要創建一個名為Description的附加列。

ISNULL SQL 函數 Case 語句

我們還想添加邏輯語句,如果Sales Amount小於或等於5,則顯示“ Cheap ”,然後在6100之間顯示“ Not so cheap ” 。如果該值大於一百,則會顯示“昂貴”。

ISNULL SQL 函數 Case 語句

在此示例中,我們使用SELECT語句來選擇要查看的列。之後,我們有包含我們前面提到的邏輯操作的CASE語句。

在使用CASE語句時,總是使用WHENTHEN語句來指示我們要在選定列中執行的邏輯操作。ELSE語句用於在不滿足邏輯操作集時設置默認值。

在CASE語句的末尾,我們有END AS和它旁邊的列名。這將創建一個名為Description的新列,其值基於我們在CASE語句中添加的邏輯操作。

使用 ISNULL SQL 函數

ISNULL函數用於檢查所選列上是否有任何NULL值,並用任何指定值替換它們。現在讓我們想像一下,我們有以下列具有NULL值。

ISNULL SQL 函數 Case 語句

在上面的示例中,所有NULL值都替換為“ Unknown ”值。以下代碼行用於創建該示例。

ISNULL SQL 函數 Case 語句

在使用ISNULL SQL 函數時,您應該首先使用SELECT語句選擇MiddleName列。

之後,您應該使用ISNULL函數檢查括號內指定的MiddleName列,並將其中的任何NULL值替換為“ Unknown ”值。

AS函數用於創建一個新列,在本例中為MiddleName_New

請注意,如果某個值不等於NULL , ISNULL函數 只會替換NULL值。然後它將從您在ISNULL函數中指定的列返回相同的值。

接下來,我將使用SSMS中的CASE語句和ISNULL函數,讓您了解它的實際工作原理。 

SSMS 中的 CASE 語句

讓我們從Person.Person中選擇FirstName列開始。請注意,在此示例中,沒有必要選擇一列。這僅供您參考。

ISNULL SQL 函數 Case 語句

顯示此列後,讓我們使用CASE語句創建一個列,無論名字是否為Kim ,該列都將顯示值。為此,只需按照以下示例操作即可。

ISNULL SQL 函數 Case 語句

在上面的示例代碼中,我們使用CASE語句添加了一個條件,如果FirstName等於“ Kim ”,它將顯示“ Yes ”,否則將顯示“ No ”。

對於此示例,我還使用END AS函數創建了一個名為“ IsKim ”的新列。有關結果,請參見下面的示例。

ISNULL SQL 函數 Case 語句

現在讓我們通過對Sales.SalesOrderHeader表中的TaxAmt列應用一些條件來使用CASE語句的另一個示例。

首先,讓我們使用以下代碼行從Sales.SalesOrderHeader中獲取前 100 列,並查找TaxAmt列。

ISNULL SQL 函數 Case 語句

之後,讓我們使用下面的示例開始使用CASE語句為TaxAmt列應用條件。

ISNULL SQL 函數 Case 語句

與前面的示例類似,我們首先選擇要應用條件的列——在本例中,它是TaxAmt列。

然後在CASE語句中,我們添加了條件,如果TaxAmt小於或等於500,那麼它將顯示值“ Perfect ”。如果TaxAmt小於或等於2000 ,則將顯示值“ Okay ”。

此外,如果不滿足條件,將顯示“ Not Good ”值。 在語句的末尾,我創建了一個名為TaxClass的新列。

ISNULL SQL 函數 Case 語句

這就是我們在SQL中使用CASE語句的方式。請注意,您可以根據需要設置任意多個條件。只需確保使用WHENTHEN語句以及END AS函數來生成將顯示結果的新列。

SSMS 中的 ISNULL SQL 函數

在此示例中,我將使用與上一個示例相同的表。然後我將演示如何使用此函數替換CurrencyRateID列下的NULL值。 

ISNULL SQL 函數 Case 語句

從上面的示例中選擇表格後,我們可以在CurrencyRateID列下看到NULL值。現在我想用“ 1 ”替換這些NULL值。為此,請參閱下面的示例。

ISNULL SQL 函數 Case 語句

要更改特定列中的NULL值,首先我們需要選擇具有 NULL 值的列。在這種情況下,它是CurrencyRateID。然後我們將使用ISNULL函數並選擇將由ISNULL函數檢查的列,即CurrencyRateID

我們還需要聲明我們想要使用的替換值——在這個例子中我使用了“ 1 ”。最後,我們將添加AS函數來創建一個名為NewRate的新列。

結果,NewRate列下的所有NULL值都被替換為“ 1 ” ,而那些沒有NULL值的值保持不變。此外,您還可以更改列的NULL值。您可以按照以下示例執行此操作。

ISNULL SQL 函數 Case 語句

使用與上一個示例相同的語法,我們只是在CurrencyRateID旁邊添加了SalesOrderID作為我們在ISNULL函數之前的引用。然後我們用SalesOrderID更改了替換值。該語句將簡單地檢查CurrencyRateID下的NULL值,並將它們替換為SalesOrderID列中的值。

結論

總之,您已經了解瞭如何使用CASE語句和ISNULL函數以及SQL中的正確語法。您還了解到,您可以在CASE語句中包含任意數量的邏輯條件。請注意,CASE語句類似於SWITCHIF ELSE語句。

除了ISNULL函數之外,您還了解到在使用此函數時有多種方法可以替換NULL值,即使用固定值或列。

一切順利,

哈菲茲






什麼是 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 網關?所有你必須知道的