NULL 值代表「未知」或「不存在」,處理不當易導致查詢結果錯誤。本文詳細說明 NULL 值檢索與替換技巧,以及 CAST 與 CONVERT 兩大型別轉換函數的差異與適用場景。
必須使用 IS NULL 或 IS NOT NULL,不可使用 = NULL。
SELECT * FROM 表 WHERE 欄位 IS NULL;
ISNULL 為 SQL Server 專用,COALESCE 為 ANSI 標準支援多參數。
SELECT
name,
ISNULL(CAST(欄位 AS VARCHAR(20)), '空值') AS 處理後欄位
FROM 表名;
進階技巧: 搭配 CAST 先轉型,避免資料型別不匹配導致錯誤。
CAST(運算式 AS 目標型別)
-- 範例
SELECT CAST('101' AS VARCHAR(20));
CONVERT(目標型別, 運算式 [, 樣式代碼])
-- 範例
SELECT CONVERT(VARCHAR(20), 100);
style 參數控制日期/時間格式(如 120 = yyyy-mm-dd hh:mi:ss)。| 場景 | 建議函數 |
|---|---|
| 跨平台相容性要求高 | CAST |
| 日期時間需特定格式輸出 | CONVERT |
| 大批量資料轉換追求效能 | CONVERT |
| 簡單數值/字串互轉 | 任皆可 |
ISNUMERIC 或 TRY_CAST (SQL 2012+) 驗證。掌握 NULL 處理與型別轉換細節,能有效避免資料處理過程中的邏輯錯誤與效能陷阱。