SQL Sybase中SUBSTRING()和RIGHT()函数之间的区别?

SQL Sybase中SUBSTRING()和RIGHT()函数之间的区别?,sql,substring,sybase,Sql,Substring,Sybase,我在代码中看到,以前的开发人员使用此方法获取id的部分编号。下面是一个例子: SUBSTRING(rec_id, 4, 1) rec\u id列是varchar(4)。我想知道如果我使用 RIGHT(rec_id,1) 性能有什么不同吗?或者其他我不知道的事情。一个很大的不同。第一个得到第四个字符。第二个获取最后一个字符。只有当rec\u id有四个字符时,它们才是相同的。@GordonLinoff在本例中rec\u id列是varchar(4),因此子字符串总是在最后一个字符中查找。我不明

我在代码中看到,以前的开发人员使用此方法获取
id
的部分编号。下面是一个例子:

SUBSTRING(rec_id, 4, 1)
rec\u id
列是
varchar(4)
。我想知道如果我使用

RIGHT(rec_id,1)

性能有什么不同吗?或者其他我不知道的事情。

一个很大的不同。第一个得到第四个字符。第二个获取最后一个字符。只有当
rec\u id
有四个字符时,它们才是相同的。@GordonLinoff在本例中
rec\u id
列是
varchar(4)
,因此子字符串总是在最后一个字符中查找。我不明白为什么
right()
在这种情况下有什么不同。它的长度是可变的,所以right可以使用较短的长度strings@JoakimDanielson如果我在CONVERT(varchar(1),type_id)=SUBSTRING(rec_id,4,1)上执行左外连接,您会推荐哪种方法?由于rec_id被声明为可变长度,因此我将使用RIGHT,但也就是说,如果第二个参数大于字符串长度,我真的不知道子字符串的行为。一个很大的区别。第一个得到第四个字符。第二个获取最后一个字符。只有当
rec\u id
有四个字符时,它们才是相同的。@GordonLinoff在本例中
rec\u id
列是
varchar(4)
,因此子字符串总是在最后一个字符中查找。我不明白为什么
right()
在这种情况下有什么不同。它的长度是可变的,所以right可以使用较短的长度strings@JoakimDanielson如果我在CONVERT(varchar(1),type_id)=SUBSTRING(rec_id,4,1)上执行左外连接,您会推荐哪种方法?由于rec_id被声明为可变长度,因此我将使用RIGHT,但也就是说,如果第二个参数大于字符串长度,我真的不知道子字符串的行为。