SQL Server:SUBSTRING位置 - 负值

时间:2015-11-01 12:19:28

标签: sql-server sql-server-2008 tsql sql-server-2012 substring

substring上提供负值是什么意思?

以下代码的输出是什么?

Declare @Strings VARCHAR(20)
Select @Strings ='Lakhan Pal Garg'
Select SUBSTRING(@Strings, -9, 16)

Lakhan 的价值如何得到答案?

1 个答案:

答案 0 :(得分:4)

来自 SUBSTRING

  

启动

     

是一个整数或bigint表达式,指定返回字符的起始位置。 如果start小于1,则返回   表达式将从指定的第一个字符开始   表达。在这种情况下,返回的字符数   是start + length-1或0之和的最大值。 If   start大于值中的字符数   表达式,返回零长度表达式。

     

长度

     

是一个正整数或bigint表达式,指定将返回表达式的多少个字符。如果长度为负,   生成错误并终止语句。如果总和   start和length大于in中的字符数   表达式,返回从start开始的整个值表达式。

Declare @Strings VARCHAR(20)
Select @Strings ='Lakhan Pal Garg'
Select SUBSTRING(@Strings,-9,16)

从开始 MAX(-9 + 16 - 1, 0) = 6

开始的字符数

所以你的查询与:

相同
Select SUBSTRING(@Strings,1,6)

LiveDemo

输出:Lakhan