sql字符截取-傳遞到 SUBSTRING 函數的長度參數無效

一個程序運行了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 需要的字符串

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章