首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 字串多段擷取技巧:LEFT、STUFF、REVERSE、CHARINDEX 組合拆解路徑

     編輯:MySQL 資料庫相關知識

需從類似 'F:\photo\Winter Leaves.jpg' 的路徑字串,分段擷取「磁碟代號」、「資料夾」、「檔名」。利用 CHARINDEX 定位分隔符,配合 LEFT、STUFF、REVERSE 即可完成,不需 CLR 或複雜邏輯。

範例字串

DECLARE @A VARCHAR(100) = 'F:\photo\Winter Leaves.jpg';

擷取邏輯與結果

目標段落T-SQL 運算式結果
第一段 (磁碟代號)LEFT(@A, CHARINDEX('\', @A) - 1)F:
中間段 (資料夾)LEFT(STUFF(@A, 1, CHARINDEX('\', @A), ''), CHARINDEX('\', STUFF(@A, 1, CHARINDEX('\', @A), '')) - 1)photo
最後段 (檔名)REVERSE(LEFT(REVERSE(@A), CHARINDEX('\', REVERSE(@A)) - 1))Winter Leaves.jpg
移除第一字元STUFF(@A, 1, 1, '')\photo\Winter Leaves.jpg

函數說明

  • CHARINDEX('find', str):回傳子字串首次出現位置 (1-based)。
  • LEFT(str, len):取左側指定長度。
  • STUFF(str, start, len, replace):刪除指定區間並插入新字串。
  • REVERSE(str):字串反轉,利於從右側定位。

通用化:分割字串為資料列 (SQL Server 2016+)

SELECT value FROM STRING_SPLIT('F:\photo\Winter Leaves.jpg', '\');
/* 結果
value
F:
photo
Winter Leaves.jpg */

舊版本可自寫表值函數搭配 CROSS APPLY 達成相同效果。

注意事項

  • 欄位型別不可為 TEXT / NTEXT (已淘汰),需為 VARCHAR/NVARCHAR。
  • 分隔符若非固定單一字元,建議改用正則或 CLR 函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved