函数subString有三个参数,帮助文档中给出这三个参数的意义,如下:
-
$sourceString
资源字符串。 -
$startingLoc
子字符串在资源字符串中的起点。如果此值为负数或 0,则只返回那些所在位置大于零的字符。如果此值大于 $sourceString 的长度,则返回长度为零的字符串。 -
$length
[可选] 要检索的字符数。如果没有指定此值,它将返回$startingLoc 中指定的位置开始直到字符串末尾的所有字符。
在试验中,本人发现第二个参数的解释中“如果此值为负数或 0,则只返回那些所在位置大于零的字符”有特殊的意义,也是一个陷阱:负数或0也将占去字符的位置。
举个例子:
declare @str nvarchar(20)
declare @subStr nvarchar(20)
set @str='123456'
set @subStr=subString(@str,1,5)
print @subStr
结果:
如果第二个参数$startingLoc给负数或0时,负数或0也将占去字符的位置,
比如:
set @subStr=subString(@str,5)
@subStr值为'1234'
位置0上没有字符,却占去一位的长度
set @subStr=subString(@str,-1,5)
@subStr值为'123'
位置-1和位置0上没有字符,却占去了两位的长度。
所以得出以下结论:使用函数subString时,第二个参数$startingLoc虽然可以给0或负数,但最好给实际的开始位置,避免造成不必要的麻烦。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。