Udemy标志

t - sql子串Transact-SQL或T-SQL是在数据库表上运行SQL语句的一种方法。SQL Server提供了几个字符串函数,您应该知道如何正确地操作和处理数据。SUBSTRING函数允许您从一个较大的字符串中获得一个较小的字符串。您还可以将SUBSTRING函数与其他函数合并,以操作字符串。

SQL Server新手?在Udemy.com学习T-SQL和数据库编程。

什么是字符串变量?

字符串是任何编程语言的一部分。T-SQL和其他编程语言的一个区别是,大多数其他编程语言通常使用“string”基本数据类型或“string”类来定义字符串。对于SQL Server,字符串变量是使用“varchar”数据类型定义的。下面的T-SQL语句创建了一个允许100个字符的SQL字符串:

声明@myvar varchar (100)

在上面的语句中,声明了一个名为“@myvar”的SQL变量。对于这个变量,字符串最多可以包含100个字符。如果试图在这个变量中存储超过100个字符,T-SQL将返回一个错误。如果试图在varchar表列中存储超过分配的字符串长度的字符串,SQL将截断数据。当这种情况发生时,SQL将返回一个错误,但您通常不会在前端应用程序中检测到它。所发生的情况是,被截断的数据在一段时间内不会被注意到,因此在意识到只存储了一半数据后,您被迫修复它。

使用SUBSTRING函数

SUBSTRING使用三个参数:想要搜索的字符串、想要开始拼接的位置以及想要拼接的字符数。可以使用SUBSTRING函数将拼接后的字符串存储在列中,从前一个字符串分配一个新字符串,或者搜索字符串以执行某种业务逻辑。

考虑以下代码:

DECLARE @myvar varchar(100) DECLARE @newvar varchar(50) SET @myvar = '这是T-SQL代码。' SET @newvar = substring(@myvar, 0,4

前两个T-SQL语句创建两个字符串变量。第一个允许100个字符。第二个允许50个字符。

接下来,将字符串“This is T-SQL code”分配给第一个@myvar字符串。接下来,调用SUBSTRING函数。SUBSTRING函数从索引0开始获取一个新字符串。该字符串的索引从0开始,但如果使用任何小于1的值,则函数从主字符串的开头开始,在本例中是@myvar。

第三个参数表示SUBSTRING函数将返回多少个字符。如果第三个参数指定的字符数超过主字符串所包含的字符数,SUBSTRING函数将返回从起点到终点的整个字符串。在本例中,只返回4个字符,因此结果字符串是“this”。

最后,SELECT语句在屏幕上显示结果。如果此代码是在向前端应用程序返回值的存储过程中设置的,则应用程序的返回值为“this”。

在Udemy.com学习如何使用T-SQL。

使用SUBSTRING在表中存储值

还可以使用SUBSTRING函数在表中存储值。考虑以下代码:

DECLARE @myvar varchar(100) DECLARE @newvar varchar(50) SET @myvar = '这是T-SQL代码。' SET @newvar = substring(@myvar, 0,4) INSERT into mytable (substring_column) values (@newvar)

除了最后一条T-SQL语句外,上面的代码是相同的。最后一条语句将一个值插入到名为“mytable”的表中。包含“This”的@newvar变量随后被插入到mytable表的substring_column中。

动态查找子字符串起点

在大多数情况下,您需要动态地找到第二个SUBSTRING参数的起点。例如,可以将全名传递给存储过程。每个全名在姓和名之间有一个空格。这个空格字符显然在不同的位置,这取决于用户的全名。

考虑以下代码:

DECLARE @spaceloc int SET @spaceloc = PATINDEX(' ', @myvar) SET @newvar = SUBSTRING(@myvar, @spaceloc, 5

在上面的代码片段中,声明了3个变量。前两个变量与前面代码片段中的变量相同。第三个字符用于保存第一个空格字符所在的位置。在本例中,名称是“Tom Smith”,因此第一个也是唯一的空格字符位于第四个字符位置。

在上面的代码中引入了一个新函数。PATINDEX函数返回特定字符串模式的位置。在本例中,PATINDEX搜索一个空格字符,但是可以使用任意数量的搜索函数。在上面的代码中需要注意的一件事是,它没有考虑到搜索短语没有被找到。如果未找到短语,则返回0。在上面的代码中,如果返回0,那么SUBSTRING函数将自动返回前5个字符。如果这对应用程序的业务逻辑没有意义,那么在编写存储过程时就需要考虑到这一点。

@spaceloc变量存储一个整数值,在本例中是4。然后使用@spaceloc变量来指示要从哪里开始拼接。第三个参数被设置为5,因此在这个过程中返回5个字符。然后将新字符串设置为@newvar变量。然后可以使用这个变量在表中存储新数据,或者使用它将新值返回给前端应用程序。在本例中,使用SELECT语句返回字符串的最后5个字符。

T-SQL中的其他字符串函数

SQL Server中的T-SQL有许多函数,可以与存储过程一起使用。微软有一个不同字符串函数的列表,或者你可以得到一些大多数的纲要流行的SQL字符串函数在Udemy.com上。

例如,LTRIM和RTRIM函数删除字符串左边或右边的额外空格。当您从用户输入中清除数据时,这些功能非常有用。例如,用户有时会在输入的开头或结尾添加空格。在更新或插入用户名和密码等数据时,不要使用这些空格。为了删除这些空间,T-SQL具有RTRIM和LTRIM函数。下面的代码是LTRIM函数的一个示例,但是RTRIM函数的工作方式与LTRIM相同,只是它从右边删除了空格:

DECLARE @myvar varchar(100) DECLARE @newvar varchar(50) SET @myvar = ' Tom Smith ' SET @newvar = LTRIM(@myvar

在上面的代码中,T-SQL返回“Tom Smith”作为结果。如果右边有空格,则使用RTRIM。

REPLACE函数是另一个常见的字符串函数。REPLACE函数用一个字符替换另一个字符。这个函数最常见的用法是用空格替换空格。考虑以下代码:

DECLARE @myvar varchar(100) DECLARE @newvar varchar(50) SET @myvar = ' Tom Smith ' SET @newvar = REPLACE(@myvar, ' ', ' '

在上面的代码中,REPLACE函数用一个空字符串替换所有空格。在本例中,上面的代码返回与前面代码相同的值。结果就是“汤姆·史密斯”。

T-SQL是一种功能强大的语言,它提供了几个字符串函数。使用这些函数来操作和存储数据。

页面最后更新:2014年5月

特色课程

T-SQL基础知识:学习基础知识

2020年1月

  • 1小时总
  • 17个讲座
  • 初学者水平
5 (1)

|课程简介由佩德罗本书

探索课程

T-SQL的学生也在学习

让你的团队。领导行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求一个演示