SQL Server String函数就像任何其他编程语言一样,SQL Server具有处理字符串的内部函数。字符串可以是任何字母数字值,包括特殊字符。您可以使用这些函数来“清理”数据库中的数据,或者在从前端应用程序接收到这些值之后更改它们。有几个SQL字符串函数,但是了解最流行的函数将帮助您了解如何创建存储过程。

SQL Server新手?作为初学者,可以在Udemy.com上学习如何使用这种语言。

什么是SQL字符串?

大多数程序使用两种基本的输入类型:数字和单词。数值输入用于计算,但是地址、国家或姓之类的输入呢?这些值是字符串。每种编程语言都有字符串变量,SQL Server也不例外。您可以使用这些变量在数据库中存储单词或字符集合。

在SQL Server中声明一个字符串变量

SQL Server中的字符串数据类型是“varchar”。下面的SQL Server语句声明了一个新的字符串变量:

声明@mystring varchar (50)

“@”字符表示它是它是一个变量的SQL。在这种情况下,变量名称是“@mystring”。如果您不小心忘记了@字符,则SQL Server假定您要引用一个列,通常返回错误。因此,确保每次引用变量时都使用@字符。

在上面的语句中,声明了一个局部变量。SQL Server中的局部变量类似于面向对象的前端编码语言。SQL Server在内存中创建变量,然后在程序运行后销毁它。此变量仅在本地存储过程或程序中可用。

语句的下一部分定义了字符串的大小。括号中的数字告诉数据库服务器要分配的字符串的大小。在本例中,您可以使用50个字符。您可以在varchar变量中指定最多8000个字符。你也可以使用" max "关键字来代替字符计数。使用“max”允许你在变量中存储最多2^31-1个字节。

需要注意的是,可变字符串长度不应该超过表中的列定义长度。例如,如果您的SQL Server表中只允许30个字符,而您的变量允许50个字符,那么当您插入或编辑数据时,SQL Server将截断数据。一些前端应用程序没有考虑到这个问题,您的程序继续运行而没有向您或用户发出错误发生的警报。这显然会导致数据完整性问题,在存储数据时可能会出现严重错误。

学习如何使用SQL Server更好地管理你的网站数据库。

concat:一起加入两个字符串

大多数编程语言具有某种功能,可以使用“concat”或“串联”功能连接两个字符串。

SQL Server有两种方式可以加入两个或更多字符串:“concat”函数或“+”字符。以下代码是使用“concat”功能的示例:

声明@mystring varchar(50)设置@mystring = concat('我的名字','jennifer')选择@mystring

第一个语句声明变量。第二个语句使用“SET”关键字,该关键字是将值分配给变量的关键字。在此示例中,CONCAT函数加入两个字符串“我的名字是”和“Jennifer”。但是,您可以在函数中添加任意数量的字符串。如果字符串为null,则Concat函数只会在字符串之间添加“null”,基本上显示一个字符串,就好像没有任何用于“null”。采取以下代码:

声明@mystring varchar(50)设置@mystring = concat('我的名字是',null,'jennifer')选择@mystring

上面的代码将显示与前面的代码片段相同的内容。对于两个SQL片段,结果都是“My name is Jennifer”。

LEN:获取字符串的长度

“LEN”函数获取字符串长度。如果您需要知道要删除字符的长度,删除字符,删除字符或在插入表之前验证长度,则这可能很有用。LEN函数通常用于逻辑环或解剖字符串。以下代码显示字符串的长度:

声明@MyString varchar(50)设置@mystring ='我的名字是jennifer。'选择len(@mystring)

在上面的代码中,“我的名称是jennifer”字符串被分配给与前面的示例中相同的变量“@mystring”。然后程序获取字符串的长度并将其显示为控制台。请注意,您可以在函数中使用变量。您可以在这些功能中使用变量,包括CONCAT功能。

LTRIM和RTRIM:从字符串中删除空格

SQL Server与其他编程语言有一点不同,其他编程语言会从字符串的左右两边删除空格。大多数编程语言都有一个“修剪”函数,可以自动删除左边和右边的空格。SQL Server只有特定的左右修剪功能。当意外地输入了额外的空格时,可以使用这些函数。例如,您的用户可能会意外地在输入框中输入“my_username”。您不希望存储额外的空格,因为用户需要输入这些空格才能登录。要删除后面的空格,可以使用“RTRIM”函数。

考虑以下代码示例:

DECLARE @mystring varchar(50) SET @mystring = '我的名字是Jennifer。选择空白(@mystring)

上面的代码返回“我的名字是Jennifer”。RTRIM函数自动删除所有尾随空格。现在,如果您有前缀空格,则需要调用LTRIM函数。您可以将它们组合成一行代码,以同时修剪左侧和右侧。以下代码向您展示如何简化您的代码以修剪两侧:

声明@mystring varchar(50)设置@mystring ='我的名字是jennifer。'选择LTRIM(RTRIM(@MyString))

上面的代码返回“我的名字是Jennifer”。

REPLACE:将一个SQL字符串替换为另一个

REPLACE函数替换现有字符串中的一个或多个字符。该函数搜索指定的字符串,并将其替换为另一个字符串。以下代码是REPLACE函数的示例:

DECLARE @mystring varchar(50) SET @mystring = '我的名字是Jennifer。SELECT count (@mystring, ' Jennifer ', ' Jenn ')

上面的代码返回“我的名字是jenn。”第一个函数参数是要操作的主字符串。第二个参数是您要搜索的字符串。第三个参数是您想要替换搜索字符串的内容。在这种情况下,该功能在@MyString变量中搜索“Jennifer”,并用“Jenn”替换“Jennifer”。如果替换功能没有找到搜索字符串,则不会发生任何内容。

当您想删除字符串中的空格时,REPLACE也很有用。我们介绍了RTRIM和LTRIM函数,它们删除了前缀和尾随的空格。使用REPLACE,您可以删除中间的空格。例如,下面的代码:

DECLARE @mystring varchar(50) SET @mystring = '我的名字是Jennifer。` SELECT replace(@mystring, ' ', ' ')

上面的代码返回“mynameisjennifer”。

SUBSTRING:抓取一个String中的一个String

子字符串在其他语言中使用。Substring从一个字符串中检索多个字符,并将其分配给一个新变量,或者只是显示和存储新字符串部分。下面的代码演示了SUBSTRING函数:

声明@mystring varchar(50)设置@mystring ='我的名字是jennifer。'选择substring(@mystring,3,7)

上面的代码返回“name is”。注意,SUBSTRING函数的“start”位置以索引0开始。这意味着第一个字符位于索引0处,计数从那里开始增加。如果指定要检索的长度大于字符串的长度,则返回从start location参数开始的整个字符串。

查找一个字符串在一个字符串中的位置

有时您需要找到字符串的位置。您需要在另一个字符串中找到字符串的整数位置而不是返回字符串。考虑以下代码:

DECLARE @mystring varchar(50) SET @mystring = '我的名字是Jennifer。` SELECT patindex(' %jennifer ', @mystring ')

在上面的代码中,PATINDEX在@mystring变量中搜索“Jennifer”(注意SQL Server的基本功能是不区分大小写的)。PATINDEX函数返回找到这个搜索表达式的整数位置。本例中返回“12”。如果PATINDEX函数找不到该字符串,则返回“0”。

右侧:从字符串的右侧或左侧获取字符

在某些情况下,您希望从字符串的左边或右边检索一定数量的字符。例如,您可能有一些数据包含用户完整的姓和名,中间有一个空格,比如“Jennifer Marsh”。你怎么知道姓或名?您可以使用LEFT和RIGHT函数来实现这一点。对于这个特定的示例,您将识别空间的位置,然后根据空间的位置获取字符。考虑以下代码:

声明@mystring varchar(50)设置@mystring ='jennifer marsh'选择权(@mystring,5)

在这个例子中,数据库从字符串的右边开始抓取5个字符。换句话说,结果就是《马什》。

除了使用左侧功能的左侧,您可以执行相同的操作。以下代码使用左功能:

DECLARE @mystring varchar(50) SET @mystring = ' Jennifer Marsh ' SELECT LEFT(@mystring, 8)

以上结果是“詹妮弗”。

在使用这个示例时,您可能需要从字符串中动态检索数据。在这种情况下,需要使用LEN函数和PATINDEX函数。这个功能有点复杂,但在许多应用程序中都很有用。考虑以下代码:

DECLARE @mystring varchar(50) SET @mystring = '我的名字是Jennifer。SELECT * * * (@mystring, @mystring) - 1)

它只有一行代码,但是业务逻辑比其他代码示例要复杂得多。业务逻辑是“提取字符串左边的所有字符,直到找到第一个空格字符。”PATINDEX函数获取第一次出现' '的位置,即字符号3。你不想要第三个字符,也就是空格字符。您可以修剪结果,但是从返回的字符数中减去1将会从结果中删除空格字符。此代码的优点是根据特定字符的动态位置检索子字符串。这意味着您可以将任何句子或短语传递给此语句,同时仍然可以获得第一个找到的空格字符之前的所有字符。

上面的例子返回“My”。如果将“Your name is Jennifer”传递给同一个语句,它将动态地定位空格字符的第一个实例并返回“Your”作为结果。创建如上所述的动态SQL语句对于良好的、可伸缩的SQL Server应用程序至关重要。

str:将十进制数转换为字符串

要对数据进行计算,它需要采用数字格式,如整数、双精度或浮点数。当您从用户检索输入时,它通常作为一个数值传递。但是,如果将其作为字符串存储在表中或将其附加到现有字符串变量,则需要将其转换为字符串。下面的代码展示了如何使用STR函数:

DECLARE @mystring varchar(50) DECLARE @mynum float SET @mystring = '我的名字是Jennifer。SELECT @mystring + ' ' + str(@mynum, 1,1)

上面的代码将十进制变量“@mynum”附加到@mystring变量的末尾。第一个参数是要转换的十进制数。第二个参数决定字符串中包含的字符数。小数点被认为是一个字符,所以不要忘记包含小数点。接下来,第三个参数告诉STR函数小数点后要包含多少个数字。在上面的代码中,将返回“5.2”。

还有几个字符串SQL函数,但这些是最常用的。知道如何操作字符串是前端和后端应用程序编程的一个重要部分。

了解如何管理SQL Server与课程在Udemy.com。

SQL Server顶级课程

SQL Server性能调整第2部分
拉斐尔Asghar
4.6 (545)
70-462:SQL Server数据库管理(DBA)
菲利普·伯顿
4.6 (2654)
畅销书
SQL Server性能调整第1部分
拉斐尔Asghar
4.4 (1457)
畅销书
SQL Server Essentials, from Scratch
乔伊蓝色
4.5 (632)
从Scratch for SQL Server Administrator中学习T-SQL
拉斐尔Asghar
4.5 (1831)
畅销书
SQL Server Reporting Services第1部分(SSRS)
拉斐尔Asghar
4.5 (1422)
收视率最高
Microsoft SQL Server 2016认证(70-764)
CubeTech学院,LLC。
4.5 (1,280)
畅销书
使用Windows窗体和SQL Server学习C#
一个阿
4.4 (1,017)
畅销书
使用SQL Server 2012实现数据仓库
康柏学习
4.3 (1327)

更多SQL Server课程

SQL Server学生也会学习

让你的团队。领导行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求一个演示