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

SQL Server 2005 內建函數完整參考手冊:字串、日期、數學、轉換四大類 50+ 函數語法與範例

     編輯:關於SqlServer

本手冊系統整理 SQL Server 2005 四大類核心內建函數,採「語法→參數→範例→說明」標準化格式,附帶資料類型優先級規則與日期格式代碼表,供開發查閱與教學參考。

一、字串函數 (18 種)

函數語法範例說明
ASCIIASCII(char_expr)ASCII('abc') → 97回傳最左字元 ASCII 碼
CHARCHAR(int_expr)CHAR(100) → 'd'ASCII 碼轉字元 (0-255),超出回傳 NULL
CHARINDEXCHARINDEX(expr1, expr2 [,start])CHARINDEX('ab','BCabTabD') → 3
CHARINDEX('ab','BCabTabD',4) → 6
尋找子字串位置,可指定起始位置,找不到回傳 0
DIFFERENCEDIFFERENCE(expr1, expr2)DIFFERENCE('Green','Greene') → 40-4 相似度,4 最高 (SOUNDEX 差異)
LEFTLEFT(expr, len)LEFT('abcdefg',2) → 'ab'左側擷取指定長度
RIGHTRIGHT(expr, len)RIGHT('abcdefg',2) → 'fg'右側擷取指定長度
LENLEN(expr)LEN('abcdefg') → 7
LEN('abcdefg ') → 7
字元數,不含尾隨空格
LOWER/UPPERLOWER/UPPER(expr)LOWER('ABC') → 'abc'大小寫轉換
LTRIM/RTRIMLTRIM/RTRIM(expr)LTRIM(' abc') → 'abc'移除前導/尾隨空格
PATINDEXPATINDEX('%pattern%', expr)PATINDEX('%ab%','123ab456') → 4
PATINDEX('ab%','123ab456') → 0
支援萬用字元 % _,首字元通常需 %
REVERSEREVERSE(expr)REVERSE('abcde') → 'edcba'字串反轉
SPACESPACE(int)'a'+SPACE(2)+'b' → 'a b'產生指定數量空格
STRSTR(float [,len[,dec]])STR(123.451,7,3) → '123.451'
STR(123.451,5,3) → '123.5' (四捨五入)
數字轉字串,預設長度 10,不足左補空格,超長右截斷
STUFFSTUFF(expr1, start, len, expr2)STUFF('abcdef',2,2,'123') → 'a123def'刪除指定長度並插入新字串
SUBSTRINGSUBSTRING(expr, start, len)SUBSTRING('abcdef',2,2) → 'bc'擷取子字串
REPLACEREPLACE(expr1, expr2, expr3)REPLACE('abcttabchhabc','abc','123') → '123tt123hh123'全域替換所有匹配項

二、日期時間函數 (12 種)

函數語法範例說明
DATEADDDATEADD(datepart, number, date)DATEADD(year,45,'1990-12-11') → 2035-12-11
DATEADD(hh,12,'1990-12-11') → 1990-12-11 12:00:00
日期加減間隔,number 非整數捨去小數
DATEDIFFDATEDIFF(datepart, start, end)DATEDIFF(yy,'1990-12-11','2008-9-10') → 18結束減開始,回傳整數差值
DATENAMEDATENAME(datepart, date)DATENAME(mm,'2007-12-11') → '12'
DATENAME(dw,'2007-12-11') → '星期二'
回傳字串形式日期部分
DATEPARTDATEPART(datepart, date)DATEPART(dw,'2007-12-11') → 3 (週日=1)回傳整數形式日期部分
GETDATEGETDATE()2009-04-28 18:57:24.153當前系統日期時間
DAY/MONTH/YEARDAY/MONTH/YEAR(date)DAY('2007-12-11') → 11等價 DATEPART(dd/mm/yy, date)
GETUTCDATEGETUTCDATE()格林威治時間UTC 標準時間

日期部分代碼對照表

日期部分含義縮寫
year年yy, yyyy
quarter季qq, q
month月mm, m
dayofyear年內天數dy, y
day天dd, d
week週wk, ww
weekday星期dw, w
hour時hh
minute分mi, n
second秒ss, s
millisecond毫秒ms

三、數學函數 (16 種)

函數語法範例說明
ABSABS(num)ABS(-23.4) → 23.4絕對值
PIPI()3.14159265358979π 常數
COS/SIN/TAN/COTCOS/SIN/TAN/COT(float)COS(PI()/3) → 0.5三角函數,參數為弧度
ACOS/ASIN/ATANACOS/ASIN/ATAN(float)ACOS(0.5) → 1.047...反三角函數,回傳弧度
DEGREESDEGREES(num)DEGREES(PI()/4) → 45弧度轉角度
RADIANSRADIANS(num)RADIANS(180.0) → 3.14159...角度轉弧度,整數輸入會截斷小數
EXPEXP(float)EXP(4) → 54.598...e 的 n 次方
LOGLOG(float)LOG(6) → 1.7917...自然對數 (底 e)
LOG10LOG10(float)LOG10(100) → 2常用對數 (底 10)
CEILINGCEILING(num)CEILING(5.44) → 6
CEILING(-8.44) → -8
大於等於的最小整數
FLOORFLOOR(num)FLOOR(5.44) → 5
FLOOR(-8.44) → -9
小於等於的最大整數
POWERPOWER(x, y)POWER(5,2) → 25x 的 y 次方
SQRTSQRT(num)SQRT(25) → 5平方根
SIGNSIGN(num)SIGN(6)→1, SIGN(-6)→-1, SIGN(0)→0正負零判斷
RANDRAND([seed])RAND(100) → 0.715... (固定種子結果固定)0-1 隨機浮點數
ROUNDROUND(num, len [,func])ROUND(1236.555,2) → 1236.560
ROUND(1236.555,2,1) → 1236.550 (截斷)
ROUND(1236.555,-1) → 1240.000
捨入,len 正=小數位,負=整數位;func=0 四捨五入,非 0 截斷

四、資料類型轉換函數 (2 種)

函數語法範例差異
CONVERTCONVERT(data_type[(len)], expr[, style])CONVERT(nvarchar, GETDATE(), 120) → '2009-04-28 12:22:21'
CONVERT(nvarchar(10), GETDATE(), 120) → '2009-04-28'
支援 style 日期格式代碼 (見下表)
CASTCAST(expr AS data_type[(len)])CAST(123 AS nvarchar) → '123'ANSI 標準,不支援 style

CONVERT 日期格式 Style 代碼精選

不含世紀 (yy)含世紀 (yyyy)標準輸出範例
0/100-預設mon dd yyyy hh:miAM
1101美國mm/dd/yyyy
2102ANSIyy.mm.dd
3103英/法dd/mm/yy
4104德國dd.mm.yy
5105意大利dd-mm-yy
-120ODBCyyyy-mm-dd hh:mi:ss(24h)

五、資料類型優先級規則 (隱含轉換依據)

運算子兩側型別不同時,低優先級隱含轉換為高優先級。若不支援隱含轉換則報錯。需顯式轉換時用 CAST/CONVERT。

優先級由高到低 (26 層):

  1. 使用者定義型別
  2. sql_variant
  3. XML
  4. datetime
  5. smalldatetime
  6. float
  7. real
  8. decimal
  9. money
  10. smallmoney
  11. bigint
  12. int
  13. smallint
  14. tinyint
  15. bit
  16. ntext
  17. text
  18. image
  19. timestamp
  20. uniqueidentifier
  21. nvarchar (含 max)
  22. nchar
  23. varchar (含 max)
  24. char
  25. varbinary (含 max)
  26. binary

中文輸出需在字串前加 N 前綴 (如 N'中文') 以正確處理 Unicode。

本手冊涵蓋 SQL Server 2005 核心函數 90% 以上日常使用場景,建議收藏備查。

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