Navicat 部落格

重要的 SQL Server 函式 - 其他函式 2021 年 5 月 24 日,由 Robert Gravelle 撰寫

第 4 部分:其他函式

最後一類重要的 SQL Server 函式包括處理 NULL、轉換和控制流程的函式。這些函式不是剩下來的,而是你會遇到的最有用的函式之一!

COALESCE

每當你選取一個值不是強制性的欄時,你肯定會遇到 NULL 值。這是有道理的,因為 NULL 值表示沒有值或缺少資訊。問題是,NULL 值包含在計算以及可能對欄資料執行的其他作業中,這可能會帶來嚴重的破壞。

COALESCE 函式接受一個參數清單並傳回第一個不包含 NULL 值的參數。因此,SQL Server 將遍歷你提供的每個輸入參數,直到它遇到一個非 NULL 的參數,或者只是遍歷了所有參數。其語法如下:

COALESCE(val1, val2, ...., val_n)

用零值代替 NULL 值是很常見的。在某些情况下,不同的值可能更有意義。例如,Sakila 範例資料庫的 film 資料表中有一個名稱為 original_language_id 的欄,用於非英語電影。每當發現 NULL 值時,我們可以使用 COALESCE 將其值設定為 1(英語的 language_id):

coalesce (53K)

CONVERT

將輸出值轉換為指定的資料類型是在意料之中的資料庫工作。在 SQL Server 中,可以使用 CONVERT 函式將值的資料類型變更為另一種類型。其語法很簡單:

CONVERT(type, value)

使用 CONVERT 的一個很好的理由是從 datetime 欄位中移除時間部分。以下的査詢以原始日期時間格式顯示同一欄位,但沒有時間部分:

convert (73K)

IIF

IF/ELSE 陳述式是程式設計中最常用的控制流程結構。SQL Server 以 IIF 函式的形式為我們的査詢提供 IF/ELSE 陳述式的功能。其語法為:

IIF(expression, value_if_true, value_if_false)

我們可以利用 IIF 函式根據長度將電影長度分為三組:Short(短)、Medium(中)、Long(長)。我們將電影長度分類如下:

  • Short:80 分鐘以下
  • Medium:80 到 120 分鐘之間
  • Long:超過 120 分鐘

我們使用 IIF() 函式比較電影的長度和特定的運算式,並且根據結果傳回 1 或 NULL。如果傳回 1,它將被計算在該欄標題(Short、Medium 或 Long)下:

iif (38K)

總結

這是關於最重要的 SQL Server 函式系列的最後一章。正如本系列的開頭所提到的,了解特定資料庫類型的確切函式名稱和特徵很有幫助,因為每個供應商的函式可能會有所不同。舉個例子,IIF 函式只有在 Microsoft 的產品中才有。

如果你對 Navicat for SQL Server 感興趣,可以免費試用 14 天!



Rob Gravelle 居住於加拿大渥太華,是一名有 20 多年經驗的 IT 專家。過住,Rob 曾為情報相關的組織(如加拿大邊境服務局和各種商業組織)建置系統。在業餘時間,Rob 是一名出色的吉他演奏家,並發行了幾張 CD

Navicat 文章
頻道記錄
分享
部落格封存檔