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

SQL Server 常用函數大全:類型轉換、空值處理、流程控制、系統函數四大類完整語法與實戰示例

     編輯:關於SqlServer

一、類型轉換函數

函數語法差異示例
CAST`CAST(expr AS type)`ANSI 標準、不可指定格式`CAST('3.14' AS DECIMAL(5,2))`
CONVERT`CONVERT(type, expr [, style])`SQL Server 專有、支援日期/數值格式`CONVERT(VARCHAR(10), GETDATE(), 120)`
TRY_CAST / TRY_CONVERT同 CAST/CONVERT轉換失敗返回 NULL 而不報錯 (SQL 2012+)`TRY_CAST('abc' AS INT)` → NULL
PARSE`PARSE(expr AS type USING culture)`.NET 解析、文化相關 (SQL 2012+)`PARSE('12/31/2023' AS DATE USING 'en-US')`

二、空值處理函數

函數語法行為示例
COALESCE`COALESCE(exp1, exp2, ..., expN)`返回首個非 NULL 參數 (標準、可多參數)`COALESCE(Phone, Email, 'N/A')`
ISNULL`ISNULL(exp, replacement)`SQL Server 專有、雙參數、類型跟隨第一參數`ISNULL(Bonus, 0)`
NULLIF`NULLIF(exp1, exp2)`相等返回 NULL,不等返回 exp1`NULLIF(Qty, 0)` 防除零

三、流程控制:CASE 表達式

-- 簡單 CASE (等值)
CASE @Grade 
    WHEN 'A' THEN '優秀' 
    WHEN 'B' THEN '良好' 
    ELSE '需努力' 
END

-- 搜尋 CASE (布林表達式)
CASE 
    WHEN Score >= 90 THEN '優秀'
    WHEN Score >= 60 THEN '及格'
    ELSE '不及格'
END
  • 順序求值,首匹配返回
  • 所有分支返回類型必須兼容 (隱式轉換到最高優先級)
  • 可嵌套、可用於 SELECT/WHERE/ORDER BY/GROUP BY/SET

四、SQL Server 獨有實用函數

函數用途示例
NEWID()生成唯一標識符 (GUID)隨機排序 `ORDER BY NEWID()`
NEWSEQUENTIALID()生成有序 GUID (減少頁分裂)`DEFAULT NEWSEQUENTIALID()`
ROW_NUMBER()窗口排名分頁、去重、Top-N
GETDATE() / SYSDATETIME()當前日期時間 (低/高精度)`SYSDATETIME()` 納秒精度
EOMONTH()月末日期 (SQL 2012+)`EOMONTH(GETDATE(), -1)` 上月尾
FORMAT().NET 格式化 (SQL 2012+)`FORMAT(GETDATE(), 'yyyy-MM-dd', 'zh-CN')`
STRING_AGG()字符串聚合 (SQL 2017+)`STRING_AGG(Name, ',')`
TRANSLATE()字符級替換 (SQL 2017+)`TRANSLATE('abc', 'abc', '123')`
CONCAT_WS()分隔符連接 (SQL 2017+)`CONCAT_WS('-', Y, M, D)`

實戰組合拳

-- 安全除法 + 空值處理 + 格式化
SELECT 
    ProductName,
    FORMAT(ISNULL(Price, 0), 'C', 'zh-CN') AS PriceDisplay,
    CASE 
        WHEN TRY_CAST(Qty AS INT) IS NULL THEN '數據異常'
        WHEN Qty = 0 THEN '缺貨'
        ELSE CAST(Amount / NULLIF(Qty, 0) AS DECIMAL(10,2))
    END AS UnitPrice
FROM Products;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved