T-SQL字符串函数:截取字符串的值

日期: 2010-05-05 作者:Robert Sheldon翻译:冯昀晖 来源:TechTarget中国 英文

T-SQL自带了一些字符串处理函数,可以用来处理数值型数据和字符型数据。本文共分两部分,对这些函数做了个简要介绍,并给出一些介绍如何使用的例子。我们在第一部分先介绍如何截取和修改字符串的值。第二部分介绍如何转换和手机字符串相关信息,以及如何执行“SOUNDEX”分析。

  T-SQL提供了丰富的字符串处理函数,你可以用这些函数方便地处理各种类型的字符串,比如char类型,nchar类型,varchar类型和nvarchar类型。例如,你可以用字符串函数删除字符串尾部的空格,截取字符串,或者转换数值型数据为字符型数据。字符串处理函数给你的T-SQL语句带来了灵活性,使你可以更容易地操作没按你的需……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

T-SQL自带了一些字符串处理函数,可以用来处理数值型数据和字符型数据。本文共分两部分,对这些函数做了个简要介绍,并给出一些介绍如何使用的例子。我们在第一部分先介绍如何截取和修改字符串的值。第二部分介绍如何转换和手机字符串相关信息,以及如何执行“SOUNDEX”分析。

  T-SQL提供了丰富的字符串处理函数,你可以用这些函数方便地处理各种类型的字符串,比如char类型,nchar类型,varchar类型和nvarchar类型。例如,你可以用字符串函数删除字符串尾部的空格,截取字符串,或者转换数值型数据为字符型数据。字符串处理函数给你的T-SQL语句带来了灵活性,使你可以更容易地操作没按你的需要出现的字符串数据。

  在本文中,我会描述SQL Server中的一些基本字符串处理函数,并举例说明它们的用法。我在SQL Server 2008上创建了一个本地实例来运行这些示例,基于“AdventureWorks2008”样例数据库进行。这些例子可以分为五类:截取字符串数据,修改数据,转换数据,获取数据相关信息,对数据执行SOUNDEX分析。这种组织方式是为了使大家对每个函数和它们之间的差异有一个更好的理解。

  截取字符串的值

  下面的一组函数详细描述了如何截取字符串的一部分。这些函数大部分都包含在下面的SELECT语句中:

  SELECT
  Name,
  LEFT(Name, 12) AS BikeType,
  SUBSTRING(Name, 9, 4) AS Model,
  RIGHT(Name, 2) AS Size,
  RTRIM(Style) AS Style
  FROM
  Production.Product
  WHERE
  ProductNumber LIKE 'bk-t%'

  你可以看到,SELECT语句中包括函数“LEFT”,“SUBSTRING”,“RIGHT”和“RTRIM”。在“AdventureWorks2008”数据库中运行该语句时,你会得到如下结果:

NameBikeTypeModelSizeStyle
-----------------------------------------------
Touring-2000 Blue, 60Touring-2000200060U
Touring-1000 Yellow, 46Touring-1000100046U
Touring-1000 Yellow, 50Touring-1000100050U
Touring-1000 Yellow, 54Touring-1000100054U
Touring-1000 Yellow, 60Touring-1000100060U
Touring-3000 Blue, 54Touring-3000300054U
Touring-3000 Blue, 58Touring-3000300058U
Touring-3000 Blue, 62Touring-3000300062U
Touring-3000 Yellow, 44Touring-3000300044U
Touring-3000 Yellow, 50Touring-3000300050U
Touring-3000 Yellow, 54Touring-3000300054U
Touring-3000 Yellow, 58Touring-3000300058U
Touring-3000 Yellow, 62Touring-3000300062U
Touring-1000 Blue, 46Touring-1000100046U
Touring-1000 Blue, 50Touring-1000100050U
Touring-1000 Blue, 54Touring-1000100054U
Touring-1000 Blue, 60Touring-1000100060U
Touring-2000 Blue, 46Touring-2000200046U
Touring-2000 Blue, 50Touring-2000200050U
Touring-2000 Blue, 54Touring-2000200054U
Touring-3000 Blue, 44Touring-3000300044U
Touring-3000 Blue, 50Touring-3000300050U

  (查询到22行记录)

  我们来分别看看这些函数。“LEFT”函数和“RIGHT”函数很相似。“LEFT”函数返回字符串左面的部分,“RIGHT”函数返回字符串右边的部分,这两个函数都根据指定的字符数进行截取。

  例如,在上面的“SELECT”语句中,“LEFT”函数返回“Name”列的前12个字符。该函数有两个参数:第一个参数是字符串表达式,第二个参数是字符数。在这个例子中,字符串表达式是“Name”列,字符数是“12”。结果,“Name”列所有值的后半部分都被截掉了,只剩下12个字符返回。如果你留意结果集的第一行,你会发现“Name”列的值“Touring-2000 Blue”已经变成了“Touring-2000”。

  “RIGHT”函数的用法也是一样的,它截取字符串右边的部分。在上面的例子中,“RIGHT”函数只返回“Name”列的最后两个字符。同样,“Name”列被指定为字符串表达式,设置的字符数为“2”,返回的结果为两位的字符串。

  “SUBSTRING”函数可以提取字符串的任意部分。该函数有三个参数:第一个参数是字符串表达式,第二个参数是指定从哪里开始截取,第三个参数表示截取多长的字符串。在上面的例子中,字符串表达式仍然是“Name”列。第二个参数“9”的意思是我们应该从第九个字符开始(截取),第三个参数“4”意思是获取四个字符。正如查询结果所示,“Model”列的每一行都只显示了第九到第十二个字符。例如,在第一行中,“2000”就从“Name”列中提取出来了。

  本例中还有一个函数是“RTRIM”,它的功能是去掉字符串(在第一个参数中指定)尾部的所有空格。在本例中,RTRIM函数用来删掉“Style”列尾部的空格。该列被配置为“NCHAR(2)”数据类型,意思是所有单字符值尾部都会补上一个空格(补足两位)。在某些应用程序和提取过程中,尾部的空格可能会引起问题(特别是在如果你试图对该值进行匹配的时候)。然而,“RTRIM”函数会删掉那个空格。

  注意,“RTRIM”函数还有与它相对的另一个函数:“LTRIM”函数。它会删除字符串左侧的空格。尽管“RTRIM”更常用,“LTRIM”在某些情况下也很有用。

作者

Robert Sheldon
Robert Sheldon

自由技术撰稿人和技术咨询专家,曾出版和发布若干本书籍、文章和培训教材,重点关注Windows、数据库、商务智能等。

相关推荐