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

SQL Server 常用函數大全:字串、日期、轉換、彙總一覽表

     編輯:關於SqlServer

前言

T-SQL 僅支援內建函數操作欄位,不可直接呼叫程式語言函數(如 IndexOf)。本文系統整理字串、日期、資料型別轉換、彙總等高頻函數,附語法與注意事項,作為開發速查手冊。

一、字串轉換函數

函數語法說明注意事項
ASCIIASCII(char_expr)回傳最左字元 ASCII 碼純數字字串可不加引號,含其他字元必須用單引號
CHARCHAR(ascii_code)ASCII 碼轉字元輸入 0-255 以外回傳 NULL
LOWER / UPPERLOWER/UPPER(char_expr)全轉小寫/大寫-
STRSTR(float_expr [, length [, decimal]])數值轉字串length 預設 10,decimal 預設 0;負值回傳 NULL;長度不足左補空格;length < 整數位回傳 *

二、去空格函數

函數語法說明
LTRIMLTRIM(char_expr)移除前導空格
RTRIMRTRIM(char_expr)移除尾隨空格

技巧:LTRIM(RTRIM(col)) 同時去首尾空格。

三、取子串函數

函數語法說明
LEFTLEFT(char_expr, int_expr)左起 N 字元
RIGHTRIGHT(char_expr, int_expr)右起 N 字元
SUBSTRINGSUBSTRING(expr, start, length)從 start 位置取 length 字元

四、字串比較/搜尋函數

函數語法說明差異
CHARINDEXCHARINDEX('substr', expr)回傳子串首次出現位置(1-based),找不到回 0不支援 TEXT/IMAGE;子串無萬用字元
PATINDEXPATINDEX('%pattern%', col_name)回傳模式首次出現位置支援萬用字元(% _);適用 CHAR/VARCHAR/TEXT

五、字串操作函數

函數語法說明
QUOTENAMEQUOTENAME('expr' [, 'quote_char'])以指定字元包裹字串,預設 []
REPLICATEREPLICATE(char_expr, int_expr)重複字串 N 次;負數回傳 NULL
REVERSEREVERSE(char_expr)字串反轉
REPLACEREPLACE(str1, str2, str3)將 str1 中的 str2 替換為 str3
SPACESPACE(int_expr)產生 N 個空格;負數回傳 NULL
STUFFSTUFF(char1, start, len, char2)將 char1 從 start 起長度 len 替換為 char2;start/len 為負或 start>長度回傳 NULL

六、資料型別轉換函數

函數語法關鍵規則
CASTCAST(expr AS data_type [length])ANSI 標準,可攜性佳
CONVERTCONVERT(data_type [length], expr [, style])支援 style 格式化日期/時間;
用戶自訂型別不可用;
TEXT→CHAR/VARCHAR 限 8000 字元;
IMAGE→BINARY/VARBINARY 限 8000 位元組;
整數→MONEY 依國家貨幣格式;
非零→BIT 為 1;
截斷時顯示 + 號

CONVERT style 常用值:112 (yyyymmdd)、120 (yyyy-mm-dd hh:mi:ss)、121 (含毫秒)、101 (mm/dd/yyyy)、103 (dd/mm/yyyy)。

七、日期時間函數

函數語法說明
DAYDAY(date_expr)回傳日期日部分 (1-31)
MONTHMONTH(date_expr)回傳月份 (1-12)
YEARYEAR(date_expr)回傳年份 (四位數)
DATEADDDATEADD(datepart, number, date)日期加減間隔,回傳新日期
DATEDIFFDATEDIFF(datepart, date1, date2)回傳 date2 - date1 在 datepart 上的差值 (帶正負號整數)
DATENAMEDATENAME(datepart, date)以字串回傳日期指定部分(如月份名稱)
DATEPARTDATEPART(datepart, date)以整數回傳日期指定部分;
DATEPART(dd,date)=DAY(date)
DATEPART(mm,date)=MONTH(date)
DATEPART(yy,date)=YEAR(date)
GETDATEGETDATE()回傳系統當前日期時間 (DATETIME)

datepart 常用值:year/yy/yyyy、quarter/qq/q、month/mm/m、dayofyear/dy/y、day/dd/d、week/wk/ww、weekday/dw、hour/hh、minute/mi/n、second/ss/s、millisecond/ms。

八、彙總函數

函數說明
COUNT(*)回傳列數(含 NULL)
COUNT(DISTINCT col)回傳欄位非重複值個數
SUM(col/expr)數值總和
SUM(DISTINCT col)非重複值總和
AVG(col/expr)數值平均
AVG(DISTINCT col)非重複值平均
MIN(col/expr)最小值
MAX(col/expr)最大值

實戰常見錯誤與修正

-- 錯誤:IndexOf 非 SQL 函數
SELECT col1 FROM t1 WHERE col1.IndexOf('雲') = 1

-- 正確:使用 CHARINDEX (位置從 1 起算)
SELECT col1 FROM t1 WHERE CHARINDEX('雲', col1) = 1

-- 或 PATINDEX 配合萬用字元
SELECT col1 FROM t1 WHERE PATINDEX('%雲%', col1) > 0
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved