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

SQL Server 字符串函數完全手冊:轉換、截取、比較、操作、類型轉換、日期函數一網打盡

     編輯:關於SqlServer

字符串處理是 SQL 開發的高頻需求。本文系統整理 SQL Server 核心字符串函數,按功能分類附帶語法與關鍵行為說明,供開發查閱。

一、字符轉換函數

函數功能關鍵說明
ASCII(char_expr)返回最左字符 ASCII 碼純數字字符串可不加引號,含其他字符必須加單引號
CHAR(int_expr)ASCII 碼轉字符輸入需在 0-255 範圍,否則返回 NULL
LOWER / UPPER大小寫轉換
STR(float_expr [, length [, decimal]])數值轉字符預設 length=10, decimal=0;length<小數點左位數時返回 *;左側補空格

二、去空格函數

  • LTRIM():移除左側空格
  • RTRIM():移除右側空格
  • 無內建 TRIM()(SQL Server 2017+ 才支援),常用 LTRIM(RTRIM()) 組合。

三、取子串函數

函數語法說明
LEFTLEFT(char_expr, int_expr)返回左起 N 字符
RIGHTRIGHT(char_expr, int_expr)返回右起 N 字符
SUBSTRINGSUBSTRING(char_expr, start, length)從 start 位置取 length 字符(起始位 1-based)

四、字符串比較/搜尋函數

函數語法差異點
CHARINDEXCHARINDEX('substr', expr)返回子串首次出現位置,不支援 TEXT/IMAGE,不支援通配符
PATINDEXPATINDEX('%pattern%', expr)模式前後必須有 %,支援通配符,適用 CHAR/VARCHAR/TEXT

五、字符串操作函數

函數語法典型用途
QUOTENAMEQUOTENAME('str' [, 'quote_char'])加括號/引號,預設 [],動態 SQL 防注入常用
REPLICATEREPLICATE(str, int)重複字符串,int<0 返回 NULL
REVERSEREVERSE(str)字符順序反轉
REPLACEREPLACE(str, old, new)替換所有 old 為 new
SPACESPACE(int)生成指定長度空格串
STUFFSTUFF(str, start, len, new_str)刪除 start 起 len 字符並插入 new_str,start/len 異常返回 NULL

六、數據類型轉換函數

  • CAST:CAST(expr AS data_type [length]) —— ANSI 標準,可移植性強。
  • CONVERT:CONVERT(data_type [length], expr [, style]) —— SQL Server 專有,style 參數支援豐富日期/時間格式化(如 120=ODBC 標準 yyyy-mm-dd hh:mi:ss)。

關鍵限制:用戶自定義類型不可用;TEXT→VARCHAR 最大 8000 字符;IMAGE→VARBINARY 最大 8000 位元組;截斷時顯示 "+" 標識。

七、日期時間函數

函數功能備註
DAY / MONTH / YEAR提取日/月/年等同 DATEPART(dd|mm|yy, date)
DATEADD日期加減間隔DATEADD(datepart, number, date)
DATEDIFF兩日期差值返回帶符號整數 DATEDIFF(datepart, start, end)
DATENAME日期部分字符串如月份名稱 'January'
DATEPART日期部分整數可提取 quarter, week, weekday 等
GETDATE當前系統日期時間精度至毫秒(約 3.33ms)

實戰提示

  • 大量字符串拼接場景建議使用 STRING_AGG (SQL 2017+) 或 FOR XML PATH 技巧,避免標量函數逐行調用開銷。
  • 動態 SQL 中識別欄位名請用 QUOTENAME 防注入。
  • 日期篩選優先用 WHERE date_col >= '20240101' AND date_col < '20240201' 利用索引,避免對欄位套用函數導致掃描。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved