SUBSTRING(expression, start, length)
SQL Server 將字符串視為從位置 1 開始。當 start ≤ 0 時,實際起始位置按下式計算:
有效起始位置 = start + 1
實際可取長度 = length - (1 - start) -- 扣除「虛擬」負偏移量
| start | length | 結果 | 說明 |
|---|---|---|---|
| 0 | 3 | 'AB' | 有效起始 1,實際長度 3-(1-0)=2 |
| 1 | 3 | 'ABC' | 標準用法 |
| -1 | 3 | 'A' | 有效起始 0→1,實際長度 3-(1-(-1))=1 |
| -2 | 3 | '' | 實際長度 3-(1-(-2))=0,返回空串 |
| -9 | 3 | '' | 實際長度為負,返回空串 |
RIGHT() 或 SUBSTRING(..., LEN(...)-n+1, n)CHARINDEX/PATINDEX 動態計算起始位置
