sql字符截取-传递到 SUBSTRING 函数的长度参数无效,sqlsubstring
sql字符截取-传递到 SUBSTRING 函数的长度参数无效,sqlsubstring
一个程序运行了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 需要的字符串
相关文章
- 暂无相关文章
用户点评