一個程序運行了3個月了,今天拋出“傳遞到 SUBSTRING 函數的長度參數無效”錯誤。
我要截取的是左起至最後一個點(右起第一個點)
經過仔細檢查,發現原來是空格惹的禍。
第3行的結果出問題了,加個rtrim,ltrim函數就解決了。
測試代碼如下,ltrim就不寫了
declare @exec1 varchar(2000)
declare @exec2 varchar(2000)
declare @exec3 varchar(2000)
set @exec1=' d.12345食品.abc'
set @exec2='d.12345食品.abc'
set @exec3='d.12345食品.abc '
-------------
select @exec1 as 字符串,
len(REVERSE(@exec1)) as 反總長度,len(@exec1) as 總長度,CHARINDEX( '.',REVERSE(RTRIM( @exec1))) as 最後一個點長度,
substring(@exec1,1,len(@exec1)-CHARINDEX( '.',REVERSE(RTRIM( @exec1)))) as 需要的字符串
-------------
select @exec2 as 字符串,
len(REVERSE(@exec2)) as 反總長度,len(@exec2) as 總長度,CHARINDEX( '.',REVERSE(RTRIM( @exec2))) as 最後一個點長度,
substring(@exec2,1,len(@exec2)-CHARINDEX( '.',REVERSE(RTRIM( @exec2)))) as 需要的字符串
-------------
select @exec3 as 字符串,
len(REVERSE(@exec3)) as 反總長度,len(@exec3) as 總長度,CHARINDEX( '.',REVERSE(RTRIM( @exec1))) as 最後一個點長度,
substring(@exec3,1,len(@exec3)-CHARINDEX( '.',REVERSE(RTRIM( @exec3)))) as 需要的字符串