SQL中的Concat函数简介
有许多字符串函数可以应用于SQL中的字符串。有时,用户需要在程序中连接或组合两个字符串。连接对于连接来自不同来源的字符串非常有用,这些来源包括字面值字符串、列值或用户定义函数的输出。这个功能是通过SQL中的连接函数实现的。可以使用“CONCAT(要连接的字符串的名称)”命令来执行。
程序员可以使用CONCAT (Hello,Age,Date)命令,其中Hello,Age和Date是字符串,给出的输出是“goodmorning4028-05-2014”。在目前的情况下,这样做似乎不合逻辑,但在编写程序时,这是非常重要和有用的。
有许多数据类型用于存储数据和支持SQL编程,这些数据类型是:
- 确切的数字
- Unicode字符串
- 大概的数字
- 二进制字符串
- 日期和时间
- 字符串
- 其他数据类型
其中,字符串进一步分为以下几类:
- 字符串:包含char、varchar和文本数据。
- Unicode字符串:它们包含nchar, nvarchar和ntext数据。
- 二进制字符串:它们包含二进制、可变二进制和图像数据。
- CONCAT_WS():返回一个带有分隔符的连接字符串
- CONCAT():返回连接的字符串。
连接的例子:
- 使用CONCAT
SELECT CONCAT (' Good ', 'Morning ', 28, '/', ' 05 ') AS Result;
这是结果集。
结果
- - -
早上好28/05
(1行受影响)
2.使用CONCAT和NULL值
CREATE TABLE user (user_name nvarchar(300) NOT NULL, user_age nvarchar(300) NULL, user_language nvarchar(300) NOT NULL);INSERT INTO user VALUES('Robert', NULL, 'English');SELECT CONCAT (user_name, user_age, user_language) AS Result FROM user;
这是结果集。
结果
- - -
罗伯特·英语
(1行受影响)
CONCAT函数将一个字符串追加到另一个字符串的末尾。此外,CONCAT函数还为我们提供了连接字符串和数值的灵活性。但是,语法取决于所使用的数据库系统(Microsoft SQL Server, MySQL, Oracle, Microsoft Access)。
让我们来谈谈Microsoft SQL Server。在此之前,“SQL Server 2012”的“+”(加号)被用作将两个字符串或整数连接到一个表达式的操作符。
使用加号语法:
使用加号连接两个字符串的通用语法:
SELECT ' string1 ' + ' ' + ' string2 ' AS Resultset
例子:
让我们考虑一个名为“person_info”的表,其中包含“FirstName”、“LastName”和“FullName”列。
SELECT [' FullName '] + ' ' +[' LastName '] AS [' FullName ']
现在,表格看起来就像这样:
与零连接:
如果空值出现在表的任何列中,该怎么办?在旧版本的“SQL Server 2012”中,ISNULL函数用于将NULL转换为空字符串。
例子:
如果“person_info”表包含一个或多个名为“MiddleName”的空列,则将不使用ISNULL连接所有三列。
SELECT[姓名],[姓名],[姓名],[姓名]+[姓名]+[姓名]as[姓名]FROM[姓名]
上面的例子将不能将NULL转换为空字符串,因为“ISNULL”没有出现在代码中,将在FullName字段中显示NULL,如下所示。
如果使用ISNULL,则代码如下:
SELECT ISNULL([name], ' ') + ' ' + ISNULL([mid], ' ') + ' ' + ISNULL([LastName], ' ') AS [FullName] FROM [person_info]
上面的示例将NULL转换为空字符串,并将字符串连接为“Michael Jackson”。
在SQL 2012中使用CONCAT函数:
“SQL Server 2012”介绍了一个非常方便和重要的函数,用于连接字符串,数字或整数值。这个函数是CONCAT()。
一般的语法:
CONCAT (String1 String2相等,…StringN)
示例1:串接字符串
在本例中,我们将使用CONCAT函数连接四个字符串值。字符串是My name is Jack
SELECT CONCAT (' My ', ' name ', ' is ', ' Jack ') AS Result
结果:
我叫杰克
示例2:连接整数
在本例中,我们将使用CONCAT函数隐式地将整数数据转换为字符串数据类型,从而连接整数值。让我们把数字2、4和35连起来。
SELECT CONCAT (2,4,35) AS Result
结果:
2435
示例3:连接数值
在本例中,我们将使用CONCAT函数隐式地将数值数据类型转换为字符串数据类型,从而连接数值值。把23。45 78。21和87。91连起来
SELECT CONCAT (23.45,78.21,87.91) AS Result
结果:
23.4578.2187.91
示例4:连接少于两个字符串
如果在CONCAT函数的参数部分只使用一个字符串,
SELECT CONCAT (' Ben ') AS Result
上面的代码将显示一条错误消息“CONCAT函数需要2到254个参数”,因为必须在CONCAT函数的参数部分给出两个或更多字符串。
示例5:连接从数据库传递的NULL值
如果数据库表中存在NULL值,会发生什么?让我们以具有两行的“person_info”表为例。
该表的“MiddleName”列包含NULL值。
SELECT CONCAT ([FirstName], [MiddleName], [LastName]) as [FullName] FROM [person_info]
现在上面的表格看起来像这样:
CONCAT函数将NULL转换为空字符串,并产生如上列“FullName”所示的结果。与“+”符号语法不同,CONCAT函数在将NULL转换为空字符串时不需要ISNULL。
结论:
串联通常会产生更具可读性的输出,同时将数据保存在单独的列中以获得更大的灵活性。然而,仅仅理解连接字符串或整数的概念是不够的,因为知道何时何地使用它很重要。语法应该根据正在使用的数据库系统进行检查。