我碰到了这句话和东西之间的区别
DECLARE @MyStr nvarchar(max) = 'This is a sentence'
SELECT SUBSTRING(@MyStr, 6, LEN(@MyStr)**-5**)
和
DECLARE @MyStr nvarchar(max) = 'This is a sentence'
SELECT SUBSTRING(@MyStr, 6, LEN(@MyStr))
我同时运行了两者,后者不添加任何空格或任何内容。
答案 0 :(得分:0)
SUBSTRING
的第三个参数是要采用的子字符串的长度。在第一个示例中,长度恰好覆盖了字符串的其余部分。在第二个示例中,长度超出了字符串的实际可用长度(5个字符)。关于长度大于可用长度会发生什么,我们可以转到documentation for SUBSTRING:
长度
是一个正整数或bigint表达式,它指定将返回多少个字符。如果length为负数,则生成错误并终止该语句。 如果开始和长度的总和大于表达式中的字符数,则返回从开始处开始的整个值表达式。
换句话说,如果length
参数加上传递的起始值大于可用参数,则SUBSTRING
仅返回可用参数。