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

SQL Server 字串函數完全指南:從 LEFT、SUBSTRING 到 CHARINDEX、STUFF 實戰速查

     編輯:關於SqlServer

在 T-SQL 中處理文字資料,只能使用內建函數,不可直接呼叫 .NET 的 IndexOf 等方法。本文系統整理常用字串函數,分類附帶語法與避坑重點,適合開發隨時查閱。

一、字元轉換函數

函數用途關鍵行為
ASCII(char_expr)回傳最左字元 ASCII 碼純數字字串可不加引號,含字母必須加單引號
CHAR(int_expr)ASCII 碼轉字元輸入超出 0~255 回傳 NULL
LOWER / UPPER大小寫轉換不影響非字母字元
STR(float_expr [,len [,dec]])數值轉字串預設長度 10、小數 0;長度不足左補空格;負值回傳 NULL

二、去除空白

  • LTRIM(str):移除前導空白
  • RTRIM(str):移除尾隨空白
  • 常搭配 LTRIM(RTRIM(col)) 或 TRIM()(SQL Server 2017+)

三、擷取子字串

函數語法說明
LEFTLEFT(str, len)從左邊取 len 字元
RIGHTRIGHT(str, len)從右邊取 len 字元
SUBSTRINGSUBSTRING(str, start, len)從 start 位置(1-based)取 len 字元

四、搜尋與比對

函數差異重點
CHARINDEX('sub', str)找子字串首次出現位置,不支援萬用字元,不可用於 TEXT/IMAGE
PATINDEX('%pattern%', col)支援萬用字元(% _),可用於 TEXT,pattern 必須包含 %

五、字串操作

  • QUOTENAME('abc', '[]') → [abc](動態 SQL 防注入必備)
  • REPLICATE('x', 3) → xxx(負數回傳 NULL)
  • REVERSE('abc') → cba
  • REPLACE(str, old, new):全域取代
  • SPACE(n):產生 n 個空白
  • STUFF(str, start, len, new):刪除指定區段並插入新字串(比 REPLACE 精準)

六、型別轉換:CAST vs CONVERT

CAST(expr AS datatype[(len)])
CONVERT(datatype[(len)], expr [, style])

CONVERT 獨有 style 參數,可格式化日期/時間(如 120 = 'yyyy-mm-dd hh:mi:ss')。

關鍵限制:

  • TEXT → VARCHAR 最大 8000 字元
  • IMAGE → VARBINARY 最大 8000 位元組
  • 轉數值型別時,字串必須為合法數字格式(含正負號)
  • 截斷發生時,結果尾部會顯示 + 標記

七、日期函數速查

函數回傳備註
DAY/ MONTH/ YEAR(date)int等同 DATEPART(dd/mm/yy, date)
DATEADD(part, n, date)datetimepart: year, quarter, month, day, hour, minute, second, ms
DATEDIFF(part, d1, d2)intd2 - d1 的間隔數,帶正負號
DATENAME(part, date)nvarchar如月份名稱 'January'
DATEPART(part, date)int數值形式
GETDATE()datetime系統當前時間

實戰小撇步: 需移除字串中所有空白?REPLACE(REPLACE(REPLACE(col, CHAR(9), ''), CHAR(10), ''), CHAR(13), '') 一次搞定 Tab、換行、回車。

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