LEFT()与RIGHT()函数是相似的,它们都返回一定长度的子字符串。这两个函数的区别是,它们返回的分别是字符串的不同部分。LEFT()函数返回字符串最左边的字符,顺序从左数到右。RIGHT()函数正好相反,它从最右边的字符开始,以从右到左的顺序返回特定数量的字符。看一看使用这两个函数返回"GeorgeWashington"这个字符串的子字符串的例子。
如果使用LEFT()函数返回一个5字符的子字符串,则函数先定位最左边的字符,向右数5个字符,然后返回这个子字符串,如下所示。
- DECLARE @FullName varchar(25)
- SET @FullName = 'George Washington'
- SELECT LEFT(@FullName, 5)
如果使用RIGHT()函数返回一个5字符的子字符串,则函数先定位最右边的字符,向左数5个字符,然后返回这个子字符串,如下所示。
- DECLARE @FullName varchar(25)
- SET @FullName = 'George Washington'
- SELECT RIGHT (@FullName, 5)
要想返回字符串中有意义的部分,这两个函数都不是特别有用。如果想返回全名中的姓氏或者名字,该怎么办?这需要多做一点工作。如果能确定每个姓名中空格的位置,就可以使用LEFT()函数在全名中读取名字。在这种情况下,可以使用CHARINDEX()或者PATINDEX()函数来定位空格,然后使用LEFT()函数返回空格前的字符。下面是第一个用过程方法编写的例子,它将处理过程分解成以下步骤:
- DECLARE @FullName varchar(25), @SpaceIndex tinyint
- SET @FullName = 'George Washington'
- -- Get index of the delimiting space:
- SET @SpaceIndex = CHARINDEX(' ' , @FullName)
- -- Return all characters to the left of the space:
- SELECT LEFT(@FullName, @SpaceIndex - 1)
如果不想在结果中包含空格,就需要从@SpaceIndex值中减去1,这样结果中就只有名字了。
我们在网站开发中,在商品、个人简历等列表中并不显示完整的描述,只是其中的一部分(完整的描述只在详细页中显示)。在T-SQL中,获取字符串第一个字符的函数是LEFT,在提取完整描述的一部分后,用操作符“+”在尾部添加“...”;
下面的SELECT查询返回所有描述的前15个字符,然后添加“...”;
以Northwind数据库为例,代码示例如下:
FROM Products