首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server NULL 值處理與資料型別轉換完全指南

     編輯:關於SqlServer

NULL 值代表「未知」或「不存在」,處理不當易導致查詢結果錯誤。本文詳細說明 NULL 值檢索與替換技巧,以及 CAST 與 CONVERT 兩大型別轉換函數的差異與適用場景。

一、NULL 值處理

1. 檢索 NULL 值

必須使用 IS NULL 或 IS NOT NULL,不可使用 = NULL。

SELECT * FROM 表 WHERE 欄位 IS NULL;

2. NULL 值替換 (ISNULL / COALESCE)

ISNULL 為 SQL Server 專用,COALESCE 為 ANSI 標準支援多參數。

SELECT
    name,
    ISNULL(CAST(欄位 AS VARCHAR(20)), '空值') AS 處理後欄位
FROM 表名;

進階技巧: 搭配 CAST 先轉型,避免資料型別不匹配導致錯誤。

二、資料型別轉換

1. CAST 函數 (ANSI 標準)

CAST(運算式 AS 目標型別)
-- 範例
SELECT CAST('101' AS VARCHAR(20));
  • 語法簡潔,跨資料庫平台相容性佳。
  • 不支援格式化選項(如日期格式)。

2. CONVERT 函數 (SQL Server 專用)

CONVERT(目標型別, 運算式 [, 樣式代碼])
-- 範例
SELECT CONVERT(VARCHAR(20), 100);
  • 支援 style 參數控制日期/時間格式(如 120 = yyyy-mm-dd hh:mi:ss)。
  • 效能略優於 CAST,適用於大量資料轉換。

選擇建議

場景建議函數
跨平台相容性要求高CAST
日期時間需特定格式輸出CONVERT
大批量資料轉換追求效能CONVERT
簡單數值/字串互轉任皆可

常見陷阱

  • 字串轉數值時若包含非數字字元會報錯,建議先用 ISNUMERIC 或 TRY_CAST (SQL 2012+) 驗證。
  • 隱含轉換可能導致索引失效,WHERE 條件中盡量避免欄位端進行轉換。

掌握 NULL 處理與型別轉換細節,能有效避免資料處理過程中的邏輯錯誤與效能陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved